我需要匹配multidimesional数组中的所有“关键字”:
$array = array(
'green' => 'keyword',
'orange',
'keyword',
'black' => array(
'purple' => 'text',
'brown',
'pink' => 'keyword'
),
'white' => array(
'red',
'yellow' => 'keyword',
'blue'
),
'violet',
'gray'
);
然后我想访问匹配结果,如:
$matches[0][0]
$matches[2]
$matches[3][2]
....
我应该使用什么?我尝试使用array_filter但不起作用..它也可能必须是递归的
function findInArray($array){
$array = array_filter($array, function($array){
return ($array == 'keyword');
});
return $array;
}
答案 0 :(得分:1)
您可以使用array_filter
完成此事。
在线检查3v4l.org
$arr = array();
$str = 'keyword';
$arr[] = array_filter($array, function($var) use ($str) {
global $arr;
if(is_array($var)){
$arr[] = array_filter($var, function($var2) use ($str) {
return preg_match("/$str/i", $var2);
});
}else{
return preg_match("/$str/i", $var);
}
});
function getL2Keys($array){
$result = array();
foreach($array as $sub) {
$result = array_merge($result, $sub);
}
return $result;
}
$arr = getL2Keys($arr);
结果:
Array
(
[pink] => keyword
[yellow] => keyword
[green] => keyword
[0] => keyword
)