PHP:优雅的方式来预测关联数组的子阵列

时间:2013-06-04 21:51:30

标签: php arrays foreach

我有一个关联的数组数组。关联数组数组并不总是包含相同的子数组。如果它存在,我想循环一个特定的子数组。是否有更优雅的方式来执行以下代码:

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

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

        // do something with $fizzy_drink
    }
}

4 个答案:

答案 0 :(得分:1)

不是真的,这很优雅:

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

如果省略isset,如果未设置fizzy_drinks,则会收到通知,如果$ drinks不是数组,则会收到警告。

答案 1 :(得分:1)

您可能更喜欢使用is_array

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

答案 2 :(得分:1)

您可以使用:

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

没有警告,没有通知

答案 3 :(得分:0)

不是真的。我认为您的解决方案非常优雅,可读。 我愿意:

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的值是否真的是一个数组。