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

时间:2013-06-23 22:45:56

标签: php arrays key

我正在尝试获得第一级数组的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");

感谢凯尔......

4 个答案:

答案 0 :(得分:0)

或者你做了一个拼写错误并且意味着

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

继承人的功能......

它允许您输入数组,以及您想要找到...的键的值。

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

然后就这样使用它......

 search($linksUrls, "contact");

答案 3 :(得分:0)

/* 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");