Search_array во вложенных массивах

У меня есть массив с вложенными массивами, и я пытался использовать функцию * search_array * для просеивания через массив и вернуть мне свои ключи. Он не работает. Вот код:

<?php $array = array( 'cat1' => array(1,2,3), 'cat2' => array(4,5,6), 'cat3' => array(7,8,9), ); foreach($array as $cat){ if(is_array($cat) echo array_search(5,$cat); //want it to return 'cat2' else echo array_search(5,$array); } 

Благодаря!

Если у вас всегда есть двумерный массив, то это так же просто:

 function find($needle, $haystack) { foreach($haystack as $key=>$value){ if(is_array($value) && array_search($needle, $value) !== false) { return $key; } } return false; } $cat = find(5, $array); 
 function mySearch($haystack, $needle, $index = null) { $aIt = new RecursiveArrayIterator($haystack); $it = new RecursiveIteratorIterator($aIt); while($it->valid()) { if (((isset($index) AND ($it->key() == $index)) OR (!isset($index))) AND ($it->current() == $needle)) { return $aIt->key(); } $it->next(); } return false; } $array = array( 'cat1' => array(1,2,3), 'cat2' => array(4,5,6), 'cat3' => array(7,8,9), ); echo $arr_key = mySearch($array, 5); в function mySearch($haystack, $needle, $index = null) { $aIt = new RecursiveArrayIterator($haystack); $it = new RecursiveIteratorIterator($aIt); while($it->valid()) { if (((isset($index) AND ($it->key() == $index)) OR (!isset($index))) AND ($it->current() == $needle)) { return $aIt->key(); } $it->next(); } return false; } $array = array( 'cat1' => array(1,2,3), 'cat2' => array(4,5,6), 'cat3' => array(7,8,9), ); echo $arr_key = mySearch($array, 5); 

это даст ответ