比较两个数组php数组_diff

比较两个数组php数组_diff,php,arrays,compare,diff,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); 您可以使用-(PHP4>=4.0.1、PHP5、PHP7) 来自PHP手册: $o = array('id'=>

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

$o = array('id'=>2,'name'=>'D','yy'=>12); 
$n = array('id'=>12,'name'=>'D','yy'=>12);
我想要的是:

$a = array('id'=>12,'id'=>2);
您可以使用-
(PHP4>=4.0.1、PHP5、PHP7)

来自PHP手册:

$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)
  }
}
数组\u合并\u递归-递归合并两个或多个数组

<?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);

?>

注意:此数组不能使用相同的索引名(ID
数组('ID'=>12,'ID'=>2)

正如@Ghost提到的,关联数组不应具有相同的键。
我建议使用
array\u diff\u assoc
函数以“嵌套数组”的方式实现“预期结果”(通过额外的索引检查计算数组的差异):

$o=array('id'=>2,'name'=>D','yy'=>12);
$n=数组('id'=>12,'name'=>D','yy'=>12);
回声“;
$result_nested_arr=[array_diff_assoc($o,$n),array_diff_assoc($n,$o)];
变量转储($result\u nested\u arr);
//输出:
阵列(2){
[0]=>
阵列(1){
[“id”]=>
int(2)
}
[1]=>
阵列(1){
[“id”]=>
内部(12)
}
}

您可以在这些数组上同时获得
id
值,但不能在同一数组中具有相同的键,尽管此函数array_diff()比较多个数组的值,并返回一个数组,其中包含第一个数组中的项,而这些项在另一个数组中不存在。因此,使用此函数无法从两个数组中获取值。
$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)
  }
}