2013-11-14 69 views
0

我想要一个函数,它将基于给定的键是否存在于PHP中的多维数组中而返回TRUE或FALSE。多维PHP数组 - 密钥存在

我一直无法找出执行此操作的递归函数。

的这是什么可以做一个样本:

$array = array(
    'key 1' => array(
     'key 1.1' => array() 
     'key 1.2' => array() 
    ), 
    'key 2' => array(
     'key 2.1' => array(
      'key 2.1.1' => array() 
     ) 
     'key 2.2' => array() 
    ) 
); 

multi_array_key_exists('key 1', $array); // return TRUE 

multi_array_key_exists('key 2.1.1', $array); // return TRUE 

multi_array_key_exists('key 3', $array); // return FALSE 
+0

你在写'multi_array_key_exists'的地方在哪里? – Izkata

回答

2

这是一个递归函数就派上用场了。

function multi_array_key_exists($key, $array) { 
    if (array_key_exists($key, $array)) 
     return true; 
    else { 
     foreach ($array as $nested) { 
      if (is_array($nested) && multi_array_key_exists($key, $nested)) 
       return true; 
     } 
    } 
    return false; 
} 

注意,这可能需要一些时间(长嵌套的数组),它可能是更好的第一扁平化,因为你只在关键是否存在兴趣。