我正在尝试获得第一级数组的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");
感谢凯尔......
答案 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");