2017-09-13 17 views
0

我有一個JSON對象,它包含兩個鍵eventsfeed,它們都包含來自Facebook頁面的值。數據需要在我的網站上通過彼此混合顯示。如何在一個循環內使用兩個對象鍵和它們的值

像這樣:

Facebook post1 
Facebook post2 
Event1 
Facebook post3 
Event2 
Facebook post4 

問題是我怎麼能叫從一個foreach循環內這兩個鍵的值?

一個小例子就是我的對象看起來像(可能是一個小錯字在這裏和那裏,因爲我不能粘貼整個對象,這是30.000線長):

{ 
    "events": { 
    "data": [ 
     { 
     "name": "InfraTech 2019", 
     "id": "255151358248763" 
     }, 
     { 
     "name": "26e editie Nacht van Oranje", 
     "description": "Traditioneel op de avond voor Koningsdag vindt in Ahoy het grootste Hollandse Muziekfeest plaats: de Nacht van Oranje. Dat betekent feest en meezingen met de grootste hits van vaderlandse top-artiesten, de medleyblokken en afsluiter Lee Towers. Alle songteksten verschijnen op lichtkranten boven het podium, dus trek je oranjepak aan en doe mee. 

Voor dit evenement geldt een minimumleeftijd van 18 jaar. Er kan bij het evenement worden gevraagd om legitimatie in geval van twijfel over leeftijd.", 
     "id": "1846453685675848" 
     }, 
     { 
     "name": "Premier League Darts in Rotterdam Ahoy", 
     "description": "De beste darters ter wereld komen terug naar Rotterdam! De PDC heeft bekend gemaakt dat de twaalfde speelronde van de Premier League op 19 april plaats zal vinden in Rotterdam Ahoy! Het dartsnajaar moet nog beginnen, maar we kijken nu al uit naar 19 april.", 
     "id": "1620470334638329" 
     } 
    ], 
    }, 
    "feed": { 
    "data": [ 
     { 
     "from": { 
      "name": "Rotterdam Ahoy", 
      "id": "165327986836920" 
     }, 
     "full_picture": "https://scontent.xx.fbcdn.net/v/t1.0-9/s720x720/21752266_1452737231429316_7827254313071348737_n.png?oh=c9ba179a6f811d9f4e7e493b1d17b366&oe=5A4456AF", 
     "id": "165327986836920_1452737261429313" 
     }, 

正如你可以看到這兩個feedevents包含我想要顯示的數據。我當前的PHP代碼是這樣的:

<? 
    error_reporting(-1); 
    $json_object = file_get_contents("https://graph.facebook.com/v2.10/165327986836920?fields=events%7Bname%2Cdescription%7D%2Cfeed%7Bfrom%2Cmessage%2Cfull_picture%7D&access_token=1234"); 


    $feedarray = json_decode($json_object); 

    // echo '<pre>'; 
    // print_r($feedarray->events); 
    // echo '</pre>'; 

    $f = 0; 

    foreach ($feedarray->events->data as $key => $feed_data) 
    { 

     if($feed_data->full_picture != ''){ 
      $fbimage = $feed_data->full_picture; 
     }else{ 
      $fbimage = 'images/backgroundheader.jpg'; 
     } 

     $shortstrfb = substr($feed_data->message, 0, 170) . '...'; 
     if($feed_data->message != ''){ 
      $f++; 
     } 

     if($f > 10){ 
      break; 
     } 

     echo $feed_data->from->name; 



     if($feed_data->from->name == 'Rotterdam Ahoy'){ 
      $facebookfeed .= ' 
        <div class="col-sm-6 col-lg-4 blog-isotope-item"> 
         <div class="itemContainer zn_columns zn_columns3"> 
          <div class="itemThumbnail"> 
           <a href="'.$feed_data->permalink_url.'" target="_blank"> 
            <img width="760" height="508" src="'.$fbimage.'" class="wp-post-image" alt="'.$feed_data->name.'"> 
           </a> 

           <div class="overlay"> 
            <div class="overlay__inner"> 
             <a href="'.$feed_data->permalink_url.'" target="_blank" class="readMore" title="" data-readmore="Bekijk op Facebook"></a> 
            </div> 
           </div> 
          </div> 

          <div class="itemHeader"> 
           <h3 class="itemTitle"> 
            <a href="'.$feed_data->permalink_url.'" target="_blank">'.$feed_data->name.'</a> 
           </h3> 

           <div class="post_details"> 
            <span class="catItemDateCreated"><span class="glyphicon glyphicon-calendar"></span> '.date("d-m-Y",strtotime($feed_data->updated_time)).'</span> 
            <span class="catItemAuthor">by <a href="'.$feed_data->permalink_url.'" title="'.$feed_data->name.'" rel="author">'.$feed_data->name.'</a></span> 
           </div> 
          </div> 

          <div class="itemBody"> 
           <div class="itemIntroText"> 
            '.$shortstrfb.' 
           </div> 
           <div class="clear"> 
           </div> 
          </div> 
         </div> 
        </div>'; 
     } 
    } 
     if(isset($facebookfeed)){ 
     echo $facebookfeed; 
     } 
    ?> 

只獲取所有信息,現在從events,但我需要從兩個信息。我怎樣才能做到這一點?

+1

如何從第一循環解耦輸出。你可以循環一次,按照你想要的順序建立一個你需要輸出的位的新數組,然後遍歷該數組寫出信息。 –

回答

0

你的foreach循環只關注$feedarray->events->data,你需要用$feedarray開始你的循環,然後循環遍歷事件和內部的feed。就像這樣:

foreach ($feedarray as $key1 => $value1) 
{ 
    foreach ($value1 as $key2 => $value2) 
    { 

    } 
} 

或只是做一樣的,你已經在你的例子,但對飼料進行:

foreach ($feedarray->feed->data as $key => $feed_data) 
{ 
    //... 
} 
+0

我得到一個警告'提供給foreach()的第80行的無效參數' (這是第二個foreach循環)。 – twan

+0

請發佈'var_dump($ feedarray)'的結果,我會以另一種方式提出建議:) – mattfryercom

+0

@twan我在我的答案中提出了另一種方法,你可以在第一次循環後再次做同樣的事情嗎? – mattfryercom

相關問題