2010-11-27 18 views
2

Ich habe ein Array mit verschachtelten Arrays, und ich habe versucht, die * search_array * -Funktion zu verwenden, um durch das Array zu sieben und geben Sie mir ihre Schlüssel zurück. Es hat nicht funktioniert. Hier ist der Code:Search_array in verschachtelten Arrays

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

Vielen Dank!

Antwort

3

Wenn Sie immer eine zweidimensionale Anordnung haben, dann ist es so einfach wie:

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

Danke. Genau danach habe ich gesucht. – 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); 

dies u die Antwort geben wird

Verwandte Themen