1

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

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

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

        // do something with $fizzy_drink
    }
}
4

4 回答 4

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 回答
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 (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

您可能更喜欢使用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 回答