2016-05-06 59 views
0

我需要匹配所有的“关键词”在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

你应该增加,其中使用的是它也与输入数组 – Ghost

回答

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 
) 
+0

添加的使用可以为您添加$数组示例代码?它不适用于我的阵列 – neoDev

+0

,所以请发布您的阵列。 –

+0

看看:[3v4l.org](https://3v4l.org/M3iTi) –