【问题标题】:Find removed and added items of modified array查找已修改数组的已删除和添加项
【发布时间】:2022-02-25 00:05:48
【问题描述】:

如何查找从最后一个状态数组列表中删除的项目以及添加到新列表中的项目? 我的数组:

$arrayOld = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"];
$arrayNew = ["Z", "B", "C", "D", "E", "F", "G", "H", "I", "J", "Y"];

说明: 我有一个名为$arrayOld 的数组,用户对列表进行一些修改并将一个新数组发布到服务器,我想知道从第一个数组中删除了哪些项目以及哪些项目是新的!

谢谢

【问题讨论】:

  • 你的意思是,比较数组?您想找出哪个元素在旧元素上但不在新元素上,反之亦然?
  • 你能通过编辑这个问题发布你的代码吗?向我们展示您尝试做的事情。

标签: php arrays diff


【解决方案1】:

您可以简单地使用 array_diff 找到那些:

$arrayOld = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"];
$arrayNew = ["Z", "B", "C", "D", "E", "F", "G", "H", "I", "J", "Y"];

$removes = array_diff($arrOld, $arrNew);
print_r($removes); // A , K

$adds = array_diff($arrNew,$arrOld);
print_r($adds); // Z , Y

根据 php.net 文档:

array_diff — 计算数组的差异

将 array1 与一个或多个其他数组进行比较,并返回 array1 中不存在于任何其他数组中的值。

php.function.array-diff

【讨论】:

    【解决方案2】:

    array_diff 将是一个解决方案,

    获取添加,

     $new_elements = array_diff($arrayNew, $arrayOld);
        print_r($new_elements); // first parameter should be new array 
    and second one should be old
    

    获取删除,

        $old_elements = array_diff($arrayOld, $arrayNew);
        print_r($old_elements); // Here first parameter should be old array 
    and second one should be new
    

    【讨论】:

      【解决方案3】:

      使用 diff 函数,它将显示所有不同的变化项的索引

      $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
      $a2=array("e"=>"red","f"=>"black","g"=>"purple");
      $a3=array("a"=>"red","b"=>"black","h"=>"yellow");
      
      
      $result=array_diff($a1,$a2,$a3);
      print_r($result);
      

      结果将是:

      数组([b] => 绿色 [c] => 蓝色);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-27
        • 2013-01-02
        • 1970-01-01
        • 1970-01-01
        • 2015-07-04
        • 2021-10-14
        • 2020-01-04
        • 2022-07-22
        相关资源
        最近更新 更多