0

わかりましたので、配列は私の弱点であり、これに苦労しています。それもおそらく非常に単純です。基本的に、私は配列を持っています

コード:

    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 を使用しています。

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 を通過するようです。両方をマージするにはどうすればよいですか?

4

2 に答える 2

0

ある種のデータベースであるデータをどのように取得しますか? そのデータを取得するときにマージできますか?

とにかく、データが常にそのように並べられている場合 (配列の一致、1 つはデータの最初の部分、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 />';
    }    
 }
于 2012-04-09T23:03:41.423 に答える
0

getalbumクエリ (およびgetcover)を反復しようとしているようです。代わりに、アルバムを反復処理して、カバーとアルバムのデータを 1 つのものとして扱いたいと思うでしょう。作業しやすいようにデータを再構築してみます。

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
}

これは、競合するキーがないことを前提としており (例のデータにはありません)、これを行う方法は他にもたくさんあることに注意してください。

于 2012-04-09T23:23:27.453 に答える