2012-04-09 19 views
0

これで配列は私の弱点です。私はこれで苦労しています。たぶん死にそうなのかもしれない。基本的に、私はある配列を持っている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 />'; 
     }  
    } 
} 

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 
          ) 

        ) 

      ) 

    ) 

    ) 

私は PHPコードを使用して配列を呼び出すためのforeachを使用していますgetalbum配列、次にgetcover。どのようにして両者を合併することができますか?

+2

期待している出力のサンプルを提供できますか?あなたの質問は最後に不明です。 「両者を併合する」とはどういう意味ですか? –

答えて

0

どのようにデータを取得しますか?何らかの種類のデータベースですか?そのデータをフェッチするときにマージできますか?

とにかく、あなたのデータがいつもそのように注文されれば(配列の一致、データの最初の部分との一致、2番目の追加)、そのようなことはどうですか?

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

ありがとう、これは私が質問を投稿した後に私が考え出したのとほぼ同じ方法です。 –

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 
} 

注これは競合するキーは(あなたの例のデータではありません)が存在しないと仮定して、これを実行する他の方法がたくさんあることを。