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

PHP - elegant way to check if assoc array value has a subarray?

有什么优雅的方法可以检查是否

$review['passenger']有没有$review['passenger']['*']

试试 is_array()。它将检查它是否是一个数组 -

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

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

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

您可以使用 array_key_exists:

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

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

我相信 Danius 使用“['*']”来引用“一个或多个子数组”,而不是将其指定为“the " 子数组。

关于他的问题,验证数组的特定 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']);

希望对您有所帮助。