0

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

$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

4 回答 4

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");
于 2013-06-24T21:56:47.363 回答
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

于 2013-06-23T22:55:46.703 回答
0

函数 array_keys 只搜索一层深度。由于您使用的是 2 级数组,因此您将需要用于搜索所有嵌套数组的函数。查看 PHP.net 页面的几个选项,但是根据经验,我说这个可以正常工作!

于 2013-06-23T22:56:21.457 回答
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");
于 2013-06-23T23:08:25.920 回答