PHP - 检查assoc数组值是否有子数组的优雅方法?

时间:2015-06-01 10:12:50

标签: php associative-array

有没有优雅的方法来检查

$review['passenger']$review['passenger']['*']吗?

3 个答案:

答案 0 :(得分:2)

尝试使用is_array()。它会检查它是否是一个数组 -

if(is_array($review['passenger'])) {
   // is an array
}

或者,如果您想检查某些key是否存在,那么 -

if(array_key_exists('key', $review['passenger'])) { ... }

答案 1 :(得分:1)

我相信Danius正在使用“['*']”来引用“一个或多个子阵列”,而不是将其指定为“ ”子阵列。

关于他的问题,验证数组的特定KEY是否具有子数组的唯一方法是逐个检查其子项,以确定它们中的任何一个是否是数组。

它可能不是“优雅”,但它具有明确的功能:

function has_array($arr) {
   $has_array = false;
   foreach ($arr as $item):
      if (is_array($item)):
          $has_array = true;
          break;
      endif;
   endforeach;
   return $has_array;
}

只需以这种方式调用函数:

$result = has_array($review['passenger']);

我希望它有所帮助。

答案 2 :(得分:0)

您可以使用array_key_exists

$array = array(
    "passenger" => array(
        "*" => "ok"    
    )     
);

if(array_key_exists('*', $array['passenger'])){
    echo "ok";
} else {
    echo "not ok";
}