Pet*_*tja 3 php arrays comparison
我正在构建应用程序,当我用X增加总和时,它会告诉用户哪些是旧钞票,哪些是新钞票。一切都很好,但我想知道现在如何获取数组中添加和删除项目的列表?
$old = array(1,5,10);
$new = array(1,5,1);
$added = array_diff($new,$old);
$removed = array_diff($old,$new);
Run Code Online (Sandbox Code Playgroud)
这就是上面的代码返回的内容:
$added是array()。不对,应该是array([2] => 1)。$removed是array([2] => 10)。正确的。我做错了什么,我该如何解决?
$added = array_diff($new,$old);
Run Code Online (Sandbox Code Playgroud)
在上面的语句中,与array_diff()进行比较并返回 中不存在的值。没有这样的值,因此它返回一个空数组。$new$old$new$old
简而言之,array_diff()不适用于重复值。您必须编写一个自定义函数来实现此目的。这是一个例子:
function array_diff_once($array1, $array2) {
foreach($array2 as $val) {
if (false !== ($pos = array_search($val, $array1))) {
unset($array1[$pos]);
}
}
return $array1;
}
Run Code Online (Sandbox Code Playgroud)
您可以像以前一样简单地使用它:
$added = array_diff_once($new,$old);
$removed = array_diff_once($old,$new);
Run Code Online (Sandbox Code Playgroud)
print_r()这些数组将正确输出:
$added = array_diff($new,$old);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2494 次 |
| 最近记录: |