我正在尝试获取一级数组的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
下面是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");