1

配列の連想配列があります。配列の連想配列には、常に同じサブ配列が含まれているとは限りません。特定のサブ配列が存在する場合は、それをループしたいと思います。次のコードを実行するためのよりエレガントな方法はありますか:

if ( array_key_exists( 'fizzy_drinks', $drinks ) ) {

    foreach ( $drinks['fizzy_drinks'] as $fizzy_drink ) {

        // do something with $fizzy_drink
    }
}
4

4 に答える 4

1

is_arrayを使用することをお勧めします。

if(is_array($drinks['fizzy_drinks'])) {
  foreach ($drinks['fizzy_drinks'] as $fizzy_drink) {
    // do something with $fizzy_drink
  }
}
于 2013-06-04T21:59:09.037 に答える
1

あまり。あなたのソリューションは非常にエレガントで読みやすいと思います。私はするだろう:

if (array_key_exists('fizzy_drinks', $drinks) && is_array($drinks['fizzy_drinks'])) {
    foreach ($drinks['fizzy_drinks'] as $fizzy_drink ) {
        // do something with $fizzy_drink
    }
}

使用しようとしている値がforeach本当に配列であるかどうかを常に確認することをお勧めします。

于 2013-06-04T21:59:43.010 に答える
1

そうではありませんが、これは非常にエレガントです。

if (isset($drinks['fizzy_drinks'])) {
    foreach ( $drinks['fizzy_drinks'] as $fizzy_drink ) {
        // do something with $fizzy_drink
    }
}

isset を省略すると、fizzy_drinks が設定されていない場合は通知が表示され、$drinks が配列でない場合は警告が表示されます。

于 2013-06-04T21:54:57.157 に答える
1

以下を使用できます。

if (! empty($drinks['fizzy_drinks']) && is_array($drinks['fizzy_drinks'])) {
    foreach ($drinks['fizzy_drinks'] as $fizzy_drink) {
        // do something with $fizzy_drink
    }
}

警告なし、通知なし

于 2013-06-04T22:01:15.030 に答える