@Roquefort

Как найти ключи в многомерном массиве и вернуть TRUE или FALSE?

нужна функция которая вернет булево значение.
у меня есть многомерный массив
$a = [
    'hill' => 'kill',
    'krop' => [
        'bar' => 'lego',
        'foo' => 'mega'
    ]
];


не могу написать функцию, которая вернет мне true если найдет в этом массиве оба ключа 'foo' и 'bar'
получается только для одного значения
function search($a)
{
    foreach ($a as $key => $value) {

        if ($key == 'foo') {
            return TRUE;
        }
        return FALSE;
    }
}
  • Вопрос задан
  • 286 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
function search($needles, $haystack) {
  $found = [];
  array_walk_recursive($haystack, function($item, $key) use ($needles, &$found) {
    if (in_array($key, $needles) && !in_array($key, $found))
      $found[] = $key;
  });
 return (count(array_diff($needles, $found)) == 0);
}
print search(['foo', 'bar'], $a) ? 'true' : 'false';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы