php - 找出在数组中添加和删除了哪些项目

标签 php arrays comparison

我正在构建应用程序,当我用 X 增加总和时,它会告诉用户哪些是 哪些是 钞票。一切都很好,但我想知道现在如何获取数组的添加和删除项列表?

$old = array(1,5,10);
$new = array(1,5,1);

$added = array_diff($new,$old);
$removed = array_diff($old,$new);

这是上面的代码返回的内容:

  • $addedarray()。不正确,应该是array([2] => 1)
  • $removedarray([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
)

Working demo

关于php - 找出在数组中添加和删除了哪些项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24233482/

相关文章:

php - 调用非对象上的成员函数bind_param()

php - 如何更改 SQL 表的日期(使用 phpmyadmin)?

php - 检查数组中是否存在值

php - 连接表但产生嵌套结果的更有效方法?

PHP ASP 分享会

c - 我是否为 C 中的指针数组正确分配了内存?

javascript - 对所有数组项使用数学 abc

r - 将 float 序列与向量进行比较

MySQL:查找数据库和数组中的值之间的存在性

PHP 计算某个操作每周发生了多少次