Как вам мой вариант?
хотел обойтись без
$out_index[] = $key;
но не смог додумать как...
Вот собственно код:
function array_search_recursive($needle, array $haystack){
$out_index = array();
foreach($haystack as $key => $value){
if(is_array($value)){
$out_index[] = $key;
$out_index[] = array_search_recursive($needle, $value);
}
}
return (empty($out_index))? array_search($needle, $haystack) : $out_index;
}
пример выполнения:
Исходный массив:
$arr = array('one' => 1,
'two' => array(
'oone' => 'mda',
'ttwwoo' => 'YO!'
)
);
Далее:
var_dump(array_search_recursive('mda',$arr));
Результат:
array(2) {
[0]=>
string(3) "two"
[1]=>
string(4) "oone"
}
Что скажете, нормальный вариант или нет ?