深度がわからない場合は、RecursiveIteratorIterator と RecursiveArrayIterator を使用して、次のようなことを行うことができます。
<?php
/*******************************
* array_multi_search
*
* @array array to be searched
* @input search string
*
* @return array(s) that match
******************************/
function array_multi_search($array, $input){
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $id => $sub){
$subArray = $iterator->getSubIterator();
if(@strstr(strtolower($sub), strtolower($input))){
$subArray = iterator_to_array($subArray);
$outputArray[] = array_merge($subArray, array('Matched' => $id));
}
}
return $outputArray;
}