比较两个数组 php array_diff
comparing two array php array_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);
您可以使用 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);
如@Ghost 所述,关联数组不应具有相同的键。
我建议使用 array_diff_assoc
函数以 "nested arrays" 的方式实现 "expected result"(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)
}
}
当我比较两个键不同但值相同的数组时,我得到一个空数组。示例:id 具有与 yy
相同的值$o = array('id'=>2,'name'=>'D','yy'=>12);
$n = array('id'=>12,'name'=>'D','yy'=>12);
我想要的是:
$a = array('id'=>12,'id'=>2);
您可以使用 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);
如@Ghost 所述,关联数组不应具有相同的键。
我建议使用 array_diff_assoc
函数以 "nested arrays" 的方式实现 "expected result"(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)
}
}