array_key_exists不起作用

array_key_exists不适用于大型multidimensional array。 例如

$arr = array( '1' => 10, '2' => array( '21' => 21, '22' => 22, '23' => array( 'test' => 100, '231' => 231 ), ), '3' => 30, '4' => 40 ); 

array_key_exists('test',$ arr)返回'false',但它可以处理一些简单的数组。

array_key_exists不起作用recursion(正如Matti Virkkunen已经指出的那样)。 查看一下PHP手册,可以使用下面这段代码来执行recursionsearch:

 <?php function array_key_exists_r($needle, $haystack) { $result = array_key_exists($needle, $haystack); if ($result) return $result; foreach ($haystack as $v) { if (is_array($v)) { $result = array_key_exists_r($needle, $v); } if ($result) return $result; } return $result; } 

array_key_exists不适用于multidimensional array。 如果你想这样做,你必须写下你自己的函数:

 function array_key_exists_multi($n, $arr) { foreach ($arr as $key=>$val) { if ($n===$key) { return $key; } if (is_array($val)) { if(multi_array_key_exists($n, $val)) { return $key . ":" . array_key_exists_multi($n, $val); } } } return false; } 

如果未find该键,则返回false如果find该键,则返回该数组中键的“位置”(如2:23:test )的string。

 $test_found = false; array_walk_recursive($arr, function($v, $k) use (&$test_found) { $test_found |= ($k == 'test'); }); 

这需要PHP 5.3或更高版本。