Как совершить поиск по многомерному массиву (мой вариант)?

Как вам мой вариант?
хотел обойтись без
$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"
}

Что скажете, нормальный вариант или нет ?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 1
@inDeepCode
$arr = array(
       'index1_level1' => array(
            'index1_level2' => array(
                'index1_leve3' => 'YO!'
            )
        ),
        'index2_level1' => array(
            'index2_level2' => 'YO!',
            'index2_level2_1' => array(
                'index2_level3' => 'YO!'
            )
        )
);
      
print_r(array_search_recursive('YO!',$arr));


Array ( 
    [0] => index1_level1 
    [1] => Array ( 
        [0] => index1_level2 
        [1] => index1_leve3 
    ) 
    [2] => index2_level1 
    [3] => Array ( 
        [0] => index2_level2_1 
        [1] => index2_level3 
    ) 
)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы