比较两个数组php array_diff

时间:2016-02-23 07:28:24

标签: php arrays compare diff

当我比较具有不同键但具有相同值的两个数组时,我得到一个空数组。示例:id具有与yy相同的值

$o = array('id'=>2,'name'=>'D','yy'=>12); 
$n = array('id'=>12,'name'=>'D','yy'=>12);

我想要的是:

$a = array('id'=>12,'id'=>2);

2 个答案:

答案 0 :(得分:1)

您可以使用array_merge_recursive() - (PHP 4 >= 4.0.1, PHP 5, PHP 7)

来自PHP手册:

array_merge_recursive - 以递归方式合并两个或多个数组

<?php

$a = array('id'=>2,'name'=>'D','yy'=>12); 
$b = array('id'=>12,'name'=>'D','yy'=>12);

$result = array_merge_recursive($a, $b);

$newArr = $result['id']; // get ID index. you can also get other indexes.

echo "<pre>";
print_r($newArr);

?>

<强>结果:

Array
(
    [0] => 2
    [1] => 12
)

请注意:您不能对此数组使用相同的索引名称( ID array('id'=>12,'id'=>2);

答案 1 :(得分:0)

正如@Ghost所提到的,关联数组不应该有相同的键 我建议实现预期的结果&#34; in&#34;嵌套数组&#34;使用array_diff_assoc函数的方式(c 通过附加索引检查来填充数组的差异):

$o = array('id'=>2,'name'=>'D','yy'=>12); 
$n = array('id'=>12,'name'=>'D','yy'=>12);

echo "<pre>";

$result_nested_arr = [array_diff_assoc($o, $n), array_diff_assoc($n, $o)];

var_dump($result_nested_arr);

// the output:
 array(2) {
  [0]=>
  array(1) {
    ["id"]=>
    int(2)
  }
  [1]=>
  array(1) {
    ["id"]=>
    int(12)
  }
}

http://php.net/manual/en/function.array-diff-assoc.php