2017-09-13 63 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

相关问题