我需要匹配多维数组中的所有"关键字":
$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;
}
您可以使用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
)