PHP:2つのキー値に基づいて現在の時刻と時間範囲を比較するjsonをループします

エース

私は基本的にいくつかのjsonデータに基づいてepgビューアを作成しようとしています。

次の方法を理解するために助けが必要です。

  1. jsonデータをループします。
  2. 各プログラムの「開始」値と「停止」値(unixタイムスタンプ)を取得します。
  3. 開始/停止のタイムスタンプに基づいて、各プログラムの時間範囲を作成します。
  4. 各プログラムの時間範囲を現在のUNIX時間と比較します。
  5. 現在の時刻に合った時間範囲の番組を表示します。

jsonデータは次のようになります。

[
    {
        "id": 1,
        "programs": [
            {
                "stop": 1475982300,
                "start": 1475976300,
                "category": "Serier",
                "id": 356532927,
                "title": "Kommissær Alleyn"
            },
            {
                "stop": 1475983500,
                "start": 1475982300,
                "category": "Børn",
                "id": 355997207,
                "title": "Udsendelsesophør"
            },
            {
                "stop": 1475985000,
                "start": 1475983500,
                "id": 358595605,
                "title": "DR-Friland: Frilandshaven"
            },
            {
                "stop": 1475986800,
                "start": 1475985000,
                "category": "Dokumentar",
                "id": 358595606,
                "title": "Bonderøven 2010"
            },
            {
                "stop": 1475989500,
                "start": 1475986800,
                "category": "Dokumentar",
                "id": 355933560,
                "title": "Made in Denmark"
            },
            {
                "stop": 1475992500,
                "start": 1475989500,
                "category": "Dokumentar",
                "id": 357701600,
                "title": "De forunderlige dyr"
            },
            {
                "stop": 1475995500,
                "start": 1475992500,
                "category": "Dokumentar",
                "id": 358745047,
                "title": "Italien: Fra Sardinien til Abruzzo"
            },
            {
                "stop": 1476001200,
                "start": 1475995500,
                "category": "Serier",
                "id": 356295670,
                "title": "Mord på hjernen"
            },
            {
                "stop": 1476004800,
                "start": 1476001200,
                "category": "Underholdning",
                "id": 357701601,
                "title": "Puk og Herman går i land - Endelave"
            },
            {
                "stop": 1476008100,
                "start": 1476004800,
                "category": "Dokumentar",
                "id": 355933566,
                "title": "Guld på godset"
            },
            {
                "stop": 1476011700,
                "start": 1476008100,
                "category": "Dokumentar",
                "id": 357701602,
                "title": "Guld på godset"
            },
            {
                "stop": 1476017700,
                "start": 1476011700,
                "category": "Serier",
                "id": 356182011,
                "title": "Kriminalkommissær Barnaby"
            },
            {
                "stop": 1476023700,
                "start": 1476017700,
                "category": "Sport",
                "id": 358577056,
                "title": "HåndboldSøndag: HC Motor Zaporozhye-TTH Holstebro (m), direkte"
            },
            {
                "stop": 1476030600,
                "start": 1476023700,
                "category": "Sport",
                "id": 358577057,
                "title": "HåndboldSøndag: Bjerringbro Silkeborg-THW Kiel (m), direkte"
            },
            {
                "stop": 1476032400,
                "start": 1476030600,
                "category": "Nyheder",
                "id": 355933567,
                "title": "TV AVISEN med Sporten og Vejret"
            },
            {
                "stop": 1476032700,
                "start": 1476032400,
                "id": 363167503,
                "title": "Guld i Købstaden - en hurtig handel"
            },
            {
                "stop": 1476036000,
                "start": 1476032700,
                "category": "Dokumentar",
                "id": 359619002,
                "title": "Atlanterhavet: Verdens vildeste hav"
            },
            {
                "stop": 1476039600,
                "start": 1476036000,
                "category": "Serier",
                "id": 355933569,
                "title": "Bedrag II"
            },
            {
                "stop": 1476042000,
                "start": 1476039600,
                "category": "Nyheder",
                "id": 355933570,
                "title": "21 Søndag"
            },
            {
                "stop": 1476042600,
                "start": 1476042000,
                "category": "Sport",
                "id": 358745049,
                "title": "Sporten"
            },
            {
                "stop": 1476049200,
                "start": 1476042600,
                "category": "Film",
                "id": 355933571,
                "title": "Killer Elite"
            },
            {
                "stop": 1476054600,
                "start": 1476049200,
                "category": "Film",
                "id": 356069380,
                "title": "BlackJack"
            },
            {
                "stop": 1476060600,
                "start": 1476054600,
                "category": "Serier",
                "id": 356069381,
                "title": "Taggart: Døden checker ind"
            },
            {
                "stop": 1476066300,
                "start": 1476060600,
                "category": "Film",
                "id": 355933572,
                "title": "Mørkets gerninger"
            },
            {
                "stop": 1476069000,
                "start": 1476066300,
                "category": "Dokumentar",
                "id": 362546476,
                "title": "DR1 Dokumentar: Danskere omringet af IS"
            }
        ]
    }
]

これは私がこれまでに持っているPHPです:( 私はそれがそれほど多くないことを知っています。私はここから先に進む方法がわからないだけです)

<?php
$channel = '1';
$current_unix = time();
$json = json_decode(file_get_contents('http://tvtid-app-backend.tv2.dk/api/tvtid/v1/dayviews/'.date('Y-m-d').'?ch='.$channel), true);
$programs = $json[0]['programs'];
$programs_length = count($programs);
for ($i = 0; $i < $programs_length ; $i++)
{
    $begin = [$programs[$i]['start']];
    $end = [$programs[$i]['stop']];
    $title = [$programs[$i]['title']];
}
?>

そして、これは出力がどのように見えるべきかです:( 例の時間は16:41です)

<ul>
   <li class="program">
      <div class="title_now">TV AVISEN med Sporten og Vejret</div>
      <div class="duration_now">
      <div class="now_begin">16:30</div><span class="begin">1476030600</span>
      <div class="progress_bar"><div class="progress"></div></div>
      <div class="now_end">17:00</div><span class="end">1476032400</span></div>
   </li>
   <li class="program">
      <div class="title">Guld i Købstaden - en hurtig handel</div>
      <div class="duration">17:00-17:05</div>
   </li>
   <li class="program">
      <div class="title">Atlanterhavet: Verdens vildeste hav</div>
      <div class="duration">17:05-18:00</div>
   </li>
   <li class="program">
      <div class="title">Bedrag II</div>
      <div class="duration">18:00-19:00</div>
   </li>

   etc...

</ul>

これが理にかなっていて、誰かが私を助けてくれることを願っています。

RiggsFolly

foreach完全な配列を処理するために使用する方がはるかに簡単です。

$channel = '1';
$current_unix = time();

// note I have removed the TRUE option from json_decode()

$json = json_decode(file_get_contents('http://tvtid-app-backend.tv2.dk/api/tvtid/v1/dayviews/'.date('Y-m-d').'?ch='.$channel));
//print_r($json);

echo '<ul>';

foreach ($json as $data) {

    echo '<li>';
    foreach ($data->programs as $prog) {

        if ( $current_unix < $prog->start ) {

            // add your own HTML instead of the simple echo
            echo $prog->title . '<br>';
            echo $prog->start . '<br>';
            echo $prog->stop . '<br>';
            echo $prog->id . '<br>';
            if ( isset($prog->category)) {
                echo $prog->category . '<br>';
            }
        }
    }
    echo '</li>';
}
echo '</ul>';

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

時間範囲に基づいてCassandraテーブルのレコードを削除します

分類Dev

Python Pandas:時間範囲に基づいてタイムサリーの行をドロップします

分類Dev

Python Pandas:時間範囲に基づいてタイムサリーの行をドロップします

分類Dev

現在の時刻に基づいてビューを作成します(MySql)

分類Dev

Java現在の時刻が2つの時間範囲内にあるかどうかを比較するにはどうすればよいですか

分類Dev

時間の粒度に基づいて2つのデータフレーム間で値を転送します

分類Dev

列の時間範囲に基づいて新しいDataFrameを作成します

分類Dev

SQLServerから2つの時間範囲の間にレコードをプルしようとしています

分類Dev

同じテーブルの2つの列間で複数の値を比較することに基づいてデータを選択します

分類Dev

開始時間と終了時間に基づいて週の名前をグループ化します

分類Dev

時間範囲に基づいてテーブルを更新する

分類Dev

時間範囲の違いに基づいてパンダの2つのデータフレームをマージする

分類Dev

日付と時刻を含む2つの列に基づいて範囲または配列を並べ替えます

分類Dev

時間範囲に基づいてRデータフレームにグループ列を追加する方法

分類Dev

欠落している時間範囲に基づいて、データベース内の欠落している行を自動入力します

分類Dev

別のテーブルの時間範囲に基づいて値を一致させる方法は?

分類Dev

SQLで現在の時刻を使用して時間範囲を取得する方法

分類Dev

範囲をループしてから、現在の状態に基づいて異なる値を割り当てます

分類Dev

Rの範囲値に基づいて2つのデータフレームを結合します

分類Dev

日付ピッカーの時刻を現在の時刻と比較しようとしています

分類Dev

2つの日時値に基づいてデータフレームをグループ化する

分類Dev

時間範囲に基づいて時間を返すためのExcelの式

分類Dev

Pythonの時刻に基づいて毎分最大値と最小値から露出時間を計算する方法

分類Dev

時間と特定の日に基づいて値を割り当てます(2つの異なる変数)

分類Dev

PostgreSQLでは、他の条件が当てはまる場合に2つの時間範囲が重複しないというテーブル制約をどのように表現しますか?

分類Dev

時間フィールドを現在の時刻および現在の時刻に1時間を加えたものと比較して、データベースレコードを取得します

分類Dev

キーC ++に基づいてJSONの値を比較する方法

分類Dev

2つの異なるテーブルを比較し、条件に基づいて値を選択します

分類Dev

バイナリの開始時刻と終了時刻の列に基づいて時系列データのRで一意のキーを作成する

Related 関連記事

  1. 1

    時間範囲に基づいてCassandraテーブルのレコードを削除します

  2. 2

    Python Pandas:時間範囲に基づいてタイムサリーの行をドロップします

  3. 3

    Python Pandas:時間範囲に基づいてタイムサリーの行をドロップします

  4. 4

    現在の時刻に基づいてビューを作成します(MySql)

  5. 5

    Java現在の時刻が2つの時間範囲内にあるかどうかを比較するにはどうすればよいですか

  6. 6

    時間の粒度に基づいて2つのデータフレーム間で値を転送します

  7. 7

    列の時間範囲に基づいて新しいDataFrameを作成します

  8. 8

    SQLServerから2つの時間範囲の間にレコードをプルしようとしています

  9. 9

    同じテーブルの2つの列間で複数の値を比較することに基づいてデータを選択します

  10. 10

    開始時間と終了時間に基づいて週の名前をグループ化します

  11. 11

    時間範囲に基づいてテーブルを更新する

  12. 12

    時間範囲の違いに基づいてパンダの2つのデータフレームをマージする

  13. 13

    日付と時刻を含む2つの列に基づいて範囲または配列を並べ替えます

  14. 14

    時間範囲に基づいてRデータフレームにグループ列を追加する方法

  15. 15

    欠落している時間範囲に基づいて、データベース内の欠落している行を自動入力します

  16. 16

    別のテーブルの時間範囲に基づいて値を一致させる方法は?

  17. 17

    SQLで現在の時刻を使用して時間範囲を取得する方法

  18. 18

    範囲をループしてから、現在の状態に基づいて異なる値を割り当てます

  19. 19

    Rの範囲値に基づいて2つのデータフレームを結合します

  20. 20

    日付ピッカーの時刻を現在の時刻と比較しようとしています

  21. 21

    2つの日時値に基づいてデータフレームをグループ化する

  22. 22

    時間範囲に基づいて時間を返すためのExcelの式

  23. 23

    Pythonの時刻に基づいて毎分最大値と最小値から露出時間を計算する方法

  24. 24

    時間と特定の日に基づいて値を割り当てます(2つの異なる変数)

  25. 25

    PostgreSQLでは、他の条件が当てはまる場合に2つの時間範囲が重複しないというテーブル制約をどのように表現しますか?

  26. 26

    時間フィールドを現在の時刻および現在の時刻に1時間を加えたものと比較して、データベースレコードを取得します

  27. 27

    キーC ++に基づいてJSONの値を比較する方法

  28. 28

    2つの異なるテーブルを比較し、条件に基づいて値を選択します

  29. 29

    バイナリの開始時刻と終了時刻の列に基づいて時系列データのRで一意のキーを作成する

ホットタグ

アーカイブ