array_keys问题是获取提供第二级数组值的第一级数组的Key


array_keys issue with getting the Key of 1st level Array providing the Value of the 2nd level array

我正在尝试获取一级数组的Key,以提供二级数组的值,但它不起作用。我在这里做错了什么?非常感谢。

$linksUrls = array(
    'index'=>array('ar'=>'inicio','en'=>'home'),
    'portfolio'=>array('ar'=>'portfolio-de-fotografia/casas','en'=>'photography-portfolio/homes'),
    'contacto'=>array('ar'=>'contacto','en'=>'contact')
            );
/* This one will not work */
print_r(array_keys($linksUrls,'contact'));
/* This one will */
function search($arr, $srch){ 
                         foreach($arr as $key => $val){ 
                               foreach($val as $k => $v){
                                     if ($v == $srch){ echo $key; } 
                                } 
                             } 
} 
search($linksUrls, "contact");

感谢Kyle。。。

或者你错别字了,意思是

print_r(array_keys($linksUrls,'contacto'))而不是print_r(array_keys($linksUrls,'contact')),或者您实际上想要进行深度搜索,因为array_keys函数不查找您作为参数传递的数组中的数组(递归搜索)。

如果你想进行递归搜索,可以看看这里:http://www.php.net/manual/en/function.array-keys.php#105890

函数array_keys只搜索一级深度。由于您使用的是2级数组,因此需要用于搜索所有嵌套数组的函数。查看PHP.net页面有几个选项,但根据经验,我认为这个很好!

下面是ya的函数。。。。

它可以让你输入数组,以及你想找到的键的值。。。

function search($arr, $srch){
   foreach($arr as $key => $val){
   if(is_array($val))search($val, $srch);
   if($val==$srch){echo $key;}
   }
}

那就这样用吧…

 search($linksUrls, "contact");
/* This one will not work */
print_r(array_keys($linksUrls,'contact'));
/* This one will */
function search($arr, $srch){ 
                     foreach($arr as $key => $val){ 
                           foreach($val as $k => $v){
                                 if ($v == $srch){ echo $key; } 
                            } 
                         } 
} 
search($linksUrls, "contact");