2012-04-09 70 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 
} 

注意,这个假设没有冲突的键(有没有在您的示例数据),还有很多其他的方法可以做到这。