匹配2个多维数组比较

时间:2016-06-15 10:50:36

标签: php arrays multidimensional-array compare

我有2个数组,dataArray()是从一个简单的HTML DOM解析器生成的。 如果我print_r $ dataArray我得到以下输出

Array ( 
[0] => Array ( ) 
[1] => Array ( 
    [0] => 'value1a'
    [1] => 80
    [2] => '2016-06-14 16:40:51'
    [3] => ) 
[2] => Array ( 
    [0] => 'value1b'
    [1] => 80
    [2] => '2016-06-14 16:30:17' 
    [3] => ) 
[3] => Array ( 
    [0] => 'value1c'
    [1] => 80
    [2] => '2016-06-14 16:40:51'
    [3] => )
    )

和动态生成的searchArray()如果​​我print_r searchArray(),我得到以下结果:

Array (
[0] => Array ( 
    [0] => 'value1c'
    [1] => 80
    [2] => '2016-06-14 16:40:51'
    [3] => ) 
)

我试图将searchArray()与dataArray()匹配,如果(所有3个值)searchArray()与(所有3个值)匹配,则给出布尔结果为true dataArray()

所以在这种情况下,这将是一个真实的陈述。

2 个答案:

答案 0 :(得分:0)

您需要编写自定义函数以递归匹配数组。

您可以查看以下帖子中提到的解决方案,这对您有很大帮助。

{{3}}

答案 1 :(得分:0)

你可以使用php函数array_searchhttp://php.net/array_search),因为在测试搜索/密钥相等性时,PHP将检查整个数组的内容以检查它们是否相等。这是我的测试用例;

<?php                                                                              

$dataArray = array(                                                                
    array(),                                                                       
    array(                                                                         
        'value1a',                                                                 
        80,                                                                        
        '2016-06-14 16:40:51',                                                     
        null                                                                       
    ),                                                                             
    array(                                                                         
        'value1b',                                                                 
        80,                                                                        
        '2016-06-14 16:30:17',                                                     
        null                                                                       
    ),                                                                             
    array(                                                                         
        'value1c',                                                                 
        80,                                                                        
        '2016-06-14 16:40:51',                                                     
        null                                                                       
    )                                                                              
);                                                                                 

$searchArray = array(                                                              
    'value1c',                                                                     
    80,                                                                            
    '2016-06-14 16:40:51',                                                         
    null                                                                           
);                                                                                 

var_dump(array_search($searchArray, $dataArray)); // int(3) (the found key)        

$searchArray[0] = 'some other value';                                              

var_dump(array_search($searchArray, $dataArray)); // false                         

?>