使用is_array()检测嵌套数组

时间:2014-01-30 17:20:28

标签: php arrays cakephp

现在我有以下数组:

    $test = array(
      'allow' => array(
          'access_level' => array(
             'manager',
             'admin',
          ),
      ),
   ),

我正在对它进行foreach循环:

foreach($test['allow'] as $key => $value) {
    if(is_array($key)){
       echo "Its an array within an array!";
    }
}

但关键不是数组。我怎么能弄清楚access_level是一个数组还是只指向一个值?

5 个答案:

答案 0 :(得分:6)

is_array($key)更改为is_array($value)

答案 1 :(得分:3)

尝试

if(is_array($value)){
       // echo ...
 }

或者:

if(is_array($test['allow'][$key])){
      // echo ...
 }

答案 2 :(得分:1)

这是因为key是元素的索引,而不是元素的值 你应该针对is_array()测试$value(这是循环中的当前元素)像这样:

is_array($value)

或者,针对与$key匹配的数组元素,如下所示:

is_array($test['allow'][$key])

答案 3 :(得分:0)

foreach($test['allow'] as $key => $value) {
                                  ^ mind the dollar sign here
    if(is_array($value)){
       echo "Its an array within an array!";
    }
}

您应该检查$value,而不是$key

答案 4 :(得分:0)

您的密钥为access_levelaccess_level的值为

array(
             'manager',
             'admin',
          ),

检查值是否为数组,而不是键。

在PHP中不可能将数组的键作为数组