PHP-用PHP如何以键值对的方式在一个多维数组里做查找?

PHP-用PHP如何以键值对的方式在一个多维数组里做查找?

清晨说ぺ晚安 发布于 2017-06-08 字数 394 浏览 1196 回复 1

求一个效率的算法能够在一个多维的关联数组里实现key, value查找,数组具体的层数不确定。
例如:

$array = array(
0 => array(id=>1, lang=>"PHP"),
1 => array(id=>2, lang=>"Javascript"),
2 => array(id=>3, lang=>"C"),
3 => array(id=>4, lang=>"PHP"),
4 => array(id=>5, lang=>"JAVA")
);

发布评论

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

评论(1

瑾兮 2017-09-04 1 楼

可以利用json_encode转成字符串,再找出对应数组:

 $array = array(
0 => array(id=>1, lang=>"PHP"),
1 => array(id=>2, lang=>"Javascript"),
2 => array(id=>3, lang=>"C"),
3 => array(id=>4, lang=>"PHP"),
4 => array(id=>5, lang=>"JAVA"),
5 => array(4 => array(id=>8, lang=>"JAVA"),
2 => array(1 => array(id=>9, lang=>"PHP") ) ),
);
function seekarr($arr=array(),$key,$val){
$res = array();
$str = json_encode($arr);
preg_match_all("/{[^{]*"".$key."":"".$val.""[^}]*}/",$str, $m);

if($m && $m[0]){
foreach($m[0] as $val) $res[] = json_decode($val,true);
}
return $res;
}
print_r(seekarr($array,'lang','PHP'));