2016-10-09 15 views
1

私は基本的にいくつかのjsonデータに基づいてepgビューアを作成しようとしています。PHP:2つのキーの値に基づいて現在の時間と時間範囲を比較するループスルー

私はどのように把握するためにいくつかの助けを必要とする:JSONデータを通じて

  1. ループを。
  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']]; 
} 
?> 

そして、この)ここから上に行く方法を知っている:私は、これは理にかなっていると、誰かが私を助けることができることを願ってい

<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> 

(例時間は16:41です)。

答えて

1

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>'; 
+0

JSONデータを処理する簡単な方法を実行する方法を示してくれてありがとう:) を万が一あなたはまた、唯一の現在の時刻に対応するプログラムをエコーする方法私を見ることができるよう、すべてのだろう来るべきプログラムに従う? (現時点以降のプログラムではありません)。 – Ace

+0

確かにそこに行く – RiggsFolly

+0

非常に非常に@ RiggsFollyありがとうありがとう:)これは本当に私の日を救った! if文をこの 'if($ current_unix < $prog-> start || $ prog-> stop> $ current_unix){'に展開するだけで、現在のプログラムを表示します;) – Ace

関連する問題