比较两个数组php数组_diff
当我比较两个键不同但值相同的数组时,得到了一个空数组。示例:id具有与yy相同的值比较两个数组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'=>
$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)
}
}