2010-11-27 23 views
2

入れ子配列の配列を持っていますが、* 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); 
} 

ありがとうございます!

答えて

3

を与えるだろう、ように簡単です:

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

はありがとうございます。それはまさに私が探していたものです。 – 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); 

あなたが常に2次元配列を持っている場合、これはUに答え

関連する問題