多维php数组中的递归多重匹配


recursive multiple match in multidimensional php array

我需要匹配多维数组中的所有"关键字":

$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
)