PHP Array_diff 当有重复的数组值时

Aci*_*don 7 php arrays array-difference

我有两个包含重复值的数组:

$test1 = Array(
        "blah1",
        "blah1",
        "blah1",
        "blah1",
        "blah2"
    );

    $test2 = Array(
        "blah1",
        "blah1",
        "blah1",
        "blah2"
    );
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取数组差异:

$result = array_diff($test1,$test2);

echo "<pre>";
print_r($result);
Run Code Online (Sandbox Code Playgroud)

我需要它返回带有单个值的数组blah1,但它返回空数组而不是......

我怀疑这与两个数组中都有重复值的事实有关,但不确定如何修复它...

请帮忙!!

编辑:

最终编写这个函数来完成这个技巧:

function subtract_array($array1,$array2){
    foreach ($array2 as $item) {
        $key = array_search($item, $array1);
        unset($array1[$key]);
    }
    return array_values($array1);
}
Run Code Online (Sandbox Code Playgroud)

Laj*_*pad 4

array_diff将第一个array与作为参数传递的其他array(多个)和returns an进行比较,其中包含第一个中存在的所有其他元素中不存在的array元素。由于和都包含和,并且没有其他值,实际上, 的预期行为是您所经历过的行为,即为空,因为没有任何元素不存在于 中。arrayarray$test1$test2"blah1""blah2"array_diffreturnarray$test1$test2

进一步阅读。另外,阅读一些理论以了解您正在使用的内容。

  • 我现在明白了,但是我应该用什么来代替才能达到预期的效果呢? (2认同)