0

たとえば、このようなコードがあり、 foreach ループを実行していますが、正常に動作します

foreach ( $response['albums']['album'] as $key=>$album ) { 
    echo($album['artist']['name']);
}

$responseの内容は

[albums] => Array
    (
        [album] => Array
            (
                [0] => Array
                    (
                        [name] => Recovery
                        [playcount] => 1176206
                    )

                [1] => Array
                    (
                        [name] => The Eminem Show
                        [playcount] => 948632
                    )

            )
    )

しかし、$response のソースが 1 つの要素だけで構成されている場合、そのようなコードがあり、foreach ループが機能しません。

[albums] => Array
    (
        [album] => Array
            (
                [name] => Doo-Wops & Hooligans
                [playcount] => 1106732

            )
    )

したがって、問題は、最小限の変更で機能させる方法です。私の初級英語で失礼します。

4

3 に答える 3

1
foreach ( $response['albums'] as $album ) { 

    if(isset(album['name']))
    {   
        echo $album['artist']['name'];
    }
    else
    {
        foreach($album as $val)
        {
            echo $val['artist']['name'];
        {
    }
}

それは機能しますが、理想的には配列は次のようになります。

[albums] => Array
(
    [0] => Array
        (
            [name] => Recovery
            [playcount] => 1176206
        )

    [1] => Array
    (
        [name] => The Eminem Show
        [playcount] => 948632
    )

)

そうすれば、まだそれを手に入れることができるものがあっても。

于 2013-05-09T05:50:41.137 に答える
1

入力配列 $response の一貫した構造を維持して単一ループを使用することをお勧めします。それ以外の場合は、次を試すことができます。

if(count($response['albums']) == 1){
 foreach($response['albums'] as $key =>$val) {

         echo $val['album']['name'];
   }
}
else {
foreach ( $response['albums']['album'] as $key=>$album ) { 
    echo($album['artist']['name']);
}
}
于 2013-05-09T05:51:56.467 に答える
1

このようにしてみてください..

if(array_key_exists(0,$response['albums']['album']))
{
        foreach ( $response['albums']['album'] as $key=>$album ) { 
        echo($album['artist']['name']);
    }
}
else
{
        foreach ( $response['albums']['album'] as $album ) { 
        echo $album['name'];
    }
}
于 2013-05-09T05:55:37.260 に答える