PHP-多维数组中根据指定值如何获取该值对应的所有的key?

PHP-多维数组中根据指定值如何获取该值对应的所有的key?

甜柠檬 发布于 2017-08-13 字数 503 浏览 1250 回复 2

例如有如下一个多维数组:

$arr = array(
'a'=>array(
'b'=>array(
'c'=>1
)
),
'b'=>array(
'c'=>array(
'd'=>2
)
),
);

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2017-09-15 2 楼

 function array_get_keys_by_v($array, $v)
{
if (!trim($v)) return false;
preg_match_all("/"([w]*)":$v/", json_encode($array), $res);
return $res[1];
}
print_r(array_get_keys_by_v($arr, 1));

夜无邪 2017-08-17 1 楼

array_walk_recursive ($arr,'keys','result');
print_r($result);

function keys($val,$key,$c) {
static $tmp = array();
global $$c;
$tmp[$val] = $key;
$$c = $tmp;
}

或者写成这样简单些,主要也是通过array_walk_recursive():

array_walk_recursive ($arr,'keys',&$result);
print_r($result);
function keys($val,$key,$c) {
$c[$val] = $key;
}

如果php版本在5.3以上,回调函数写成匿名的方式更简单了,就一行代码搞定~