【问题标题】:Search_array in nested arrays嵌套数组中的 Search_array
【发布时间】:2011-05-16 11:57:24
【问题描述】:

我有一个带有嵌套数组的数组,我试图使用 *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);
}

谢谢!

【问题讨论】:

    标签: php arrays nested key


    【解决方案1】:

    如果你总是有一个二维数组,那么它很简单:

    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】:
    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); 
    

    这会给你答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2013-07-28
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多