2010-11-27 7 views
2

J'ai un tableau avec des tableaux imbriqués, et j'essayais d'utiliser la fonction * search_array * pour passer au crible le tableau et me rendre leurs clés. Cela n'a pas fonctionné. Voici le code:Search_array dans les tableaux imbriqués

<?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); 
} 

Merci!

Répondre

3

Si vous avez toujours un tableau à deux dimensions, il est aussi facile que:

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); 
+0

Merci. C'est exactement ce que je cherchais. – Ian

2
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); 

cela donnera u la réponse

Questions connexes