目前,假设我有两个数组如下:
$values1= array(1, 2, 3);
$values2= array(1, 3, 4);
如果我在循环中比较两个数组,我将能够区分第一个数组的哪些数组元素没有被比较。例如:
$data=array();
foreach($values1 as $value) {
if(! in_array($value, $values2 )) {
$data[]=$value;
}
}
通过这种方式,我会发现2
是不在$value2 array
中的值,但同时我也想知道什么是不存在的其他额外元素在$valnues2 array
中进行了比较,例如4
。
任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
我希望你不介意使用一个函数,但是你可以将它们合并,并将它们与具有相似值的那些进行比较以获得差异。像这样:
$values1 = array(1, 2, 3);
$values2 = array(1, 3, 4);
$others = array_diff(array_merge($values1, $values2), array_intersect($values1, $values2));
echo '<pre>';
print_r($others);
应输出如下内容:
Array
(
[1] => 2
[5] => 4
)
答案 1 :(得分:1)
array_diff()
仅检查arg 1中不存在于arg 2中的元素,解决此问题的一种方法是检查两种方式并合并结果:
function array_diff_both($a, $b) {
$d1 = array_diff($a, $b);
$d2 = array_diff($b, $a);
return array_merge($d1, $d2);
}
print_r(array_diff_both($values1, $values2));
示例:
Array
(
[0] => 2
[1] => 4
)
展望未来,最好将数组作为数组传递,以便您可以使用数组的数量扩展此功能。