我正在构建应用程序,当我用 X 增加总和时,它会告诉用户哪些是旧 哪些是新 钞票。一切都很好,但我想知道现在如何获取数组的添加和删除项列表?
$old = array(1,5,10);
$new = array(1,5,1);
$added = array_diff($new,$old);
$removed = array_diff($old,$new);
这是上面的代码返回的内容:
$added
是array()
。不正确,应该是array([2] => 1)
。$removed
是array([2] => 10)
。正确。
我做错了什么,我该如何解决?
最佳答案
$added = array_diff($new,$old);
在上面的语句中,array_diff()
将 $new
与 $old
进行比较,并返回 $new
中不存在于 $ 中的值旧
。没有这样的值,因此它返回一个空数组。
简而言之,array_diff()
不适用于重复值。您将必须编写自定义函数来实现此目的。这是 an example :
function array_diff_once($array1, $array2) {
foreach($array2 as $val) {
if (false !== ($pos = array_search($val, $array1))) {
unset($array1[$pos]);
}
}
return $array1;
}
您可以像以前一样简单地使用它:
$added = array_diff_once($new,$old);
$removed = array_diff_once($old,$new);
print_r()
这些数组将正确输出:
Array
(
[2] => 1
)
Array
(
[2] => 10
)
关于php - 找出在数组中添加和删除了哪些项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24233482/