Search_array во вложенных массивах - PullRequest
2 голосов
/ 27 ноября 2010

У меня есть массив с вложенными массивами, и я пытался использовать функцию * 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);
}

Спасибо! * * 1004

Ответы [ 2 ]

3 голосов
/ 27 ноября 2010

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

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);
2 голосов
/ 27 ноября 2010
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); 

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...