Я вытащил эту функцию из руководства . Это рекурсивная версия array_key_exists () . Так как он рекурсивный, не имеет значения, насколько глубоко ключи погружены в массив. Эта функция не сообщает вам , где ключ может быть найден & mdash; только если он существует.
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;
}
Используя ваш массив:
<?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;
}
$arr = array
(
array
(
'id' => 3,
'comments' => 'comment text'
),
array
(
'id' => 3,
'comments' => 'comment text'
),
array
(
'idMenu' => 1,
'names' => 'text'
),
array
(
'idMenu' => 3,
'names' => 'names text'
)
);
var_dump(array_key_exists_r('comments', $arr));
var_dump(array_key_exists_r('names', $arr));
var_dump(array_key_exists_r('bob', $arr));
?>
Выход:
bool(true)
bool(true)
bool(false)