Почему не выводиться ключ вложенного массива при поиске?
Есть задача
Написать функцию которая принимает два аргумента, первый массив а вторым значение для поиска.
В случае если значение было найдено возвращает его ключ иначе false.
пользоваться стандартной функцией для поиска в массиве нельзя. Учтите что массив может быть многомерный. Использовать рекурсию.
Вот как ее решил:
function find(array $arr,$someVar){
foreach($arr as $key=>$var){// циклом проходимся по массиву
if(is_array($var)){// если итератор тоже массив, то рекурсивно вызывается функция find
find($var,$someVar);
}
elseif($var===$someVar){
return $key;
}
}
return false;
}
var_dump(find(['a',['b',6,'e'],'c','b'],'e'));
Почему возвращает false? Подскажите пожалуйста где я допустил ошибку?
Ответы (1 шт):
Автор решения: Slava Rozhnev
→ Ссылка
Вам нужно добавить возможность возврата результата рекурсивного вызова
function find(array $arr, $someVar)
{
foreach ($arr as $key => $var) {
// циклом проходимся по массиву
if (is_array($var)) {
// если итератор тоже массив, то рекурсивно вызывается функция find
$k = find($var, $someVar);
// return when recursive call fund key
if ($k) {
return $k;
}
} elseif ($var === $someVar) {
return $key;
}
}
return false;
}