2012-04-09 31 views
0

好吧,所以數組是我的弱點,我正在爲此付出努力。這可能也很簡單。基本上,我有一個數組是與foreach和多維數組相混淆 - PHP

代碼:

Array 
    (
[data] => Array 
    (
     [0] => Array 
      (
       [name] => getalbum 
       [fql_result_set] => Array 
        (
         [0] => Array 
          (
           [aid] => 187046464639937_101906 
           [name] => photo tab 
           [cover_pid] => 187046464639937_1661168 
          ) 

         [1] => Array 
          (
           [aid] => 187046464639937_99627 
           [name] => Cover Photos 
           [cover_pid] => 187046464639937_1661054 
          ) 

        ) 

      ) 

     [1] => Array 
      (
       [name] => getcover 
       [fql_result_set] => Array 
        (
         [0] => Array 
          (
           [src] => http://photos-g.ak.fbcdn.net/hphotos-ak-prn1/526499_403098366368078_187046464639937_1661168_217706037_s.jpg 
          ) 

         [1] => Array 
          (
           [src] => http://photos-b.ak.fbcdn.net/hphotos-ak-ash3/562470_403049039706344_187046464639937_1661054_361917190_s.jpg 
          ) 

        ) 

      ) 

    ) 

    ) 

我使用一個foreach使用 PHP代碼來調用數組:

foreach($fql_query_obj['data'] as $albums){ 
    foreach($albums['fql_result_set'] as $album){ 
     //print_r($album); 
     if ( ($album['name'] != "Wall Photos") 
      && ($album['name'] != "Cover Photos") 
      && ($album['name'] != "photo tab")) 
     { 
      echo $album['name'].' :: '.$album['aid']; 
      echo '<img src="'.$album['src'].'" /><br />'; 
     }  
    } 
} 

現在看來要經過getalbum數組然後getcover。我該怎麼做才能將它們合併在一起?

+2

您能提供您期望的輸出樣本嗎?最後你的問題還不清楚。 「將它們合併在一起」是什麼意思? – 2012-04-09 22:41:54

回答

0

如何獲取數據,某種數據庫?也許你可以在獲取數據時合併它?無論如何,如果您的數據總是以這種方式排列(匹配數組,第一部分是數據,第二部分是數據,第二部分是額外的),那麼類似的東西呢?

foreach($fql_query_obj['data'][0]['fql_result_set'] as $key_album => $album){ 
    //print_r($album); 
    if ( ($album['name'] != "Wall Photos") 
     && ($album['name'] != "Cover Photos") 
     && ($album['name'] != "photo tab")) 
    { 
     echo $album['name'].' :: '.$album['aid']; 
     echo '<img src="'.$fql_query_obj['data'][1]['fql_result_set'][$key_album]['src'].'" /><br />'; 
    }  
} 
+0

謝謝,這與我在發佈問題後結束瞭解決問題的方式幾乎相同。 – 2012-04-09 23:15:39

0

好像你正在嘗試迭代查詢(getalbumgetcover)。相反,您可能想要迭代相冊並將封面和專輯數據視爲統一的內容。我會嘗試重組數據是比較容易的工作:

list($albumsQuery, $coversQuery) = $fql_query_obj['data']; 
$albums = array(); 

foreach ($albumsQuery['fql_result_set'] as $album) { 
    $albums[] = $album; 
} 

for ($i = 0, $numAlbums = count($albums); $i < $numAlbums; ++$i) { 
    $albums[$i] = array_merge($albums[$i], $coversQuery['fql_result_set'][$i]); 
} 

foreach ($albums as $album) { 
    // Here, $album contains data from both arrays 
} 

注意,這個假設沒有衝突的鍵(有沒有在您的示例數據),還有很多其他的方法可以做到這。