php-src/ext/standard/tests/array/array_diff_single_array.phpt
Nikita Popov 73ab7b30ca Allow array_diff() and array_intersect() with single array argument
Both of these functions are well-defined when used with a single
array argument -- rejecting this case was an artificial limitation.
This is not useful when called with explicit arguments, but removes
edge-cases when used with argument unpacking:

    // OK even if $excludes is empty.
    array_diff($array, ...$excludes);

    // OK even if $arrays contains a single array only.
    array_intersect(...$arrays);

This matches the behavior of functions like array_merge() and
array_push(), which also allow calls with no array or a single
array respectively.

Closes GH-6097.
2020-09-09 11:03:17 +02:00

50 lines
727 B
PHP

--TEST--
array_diff() with single array argument
--FILE--
<?php
$array = ["a" => 42];
$cmp = function($a, $b) { return $a <=> $b; };
var_dump(array_diff($array));
var_dump(array_diff_key($array));
var_dump(array_diff_ukey($array, $cmp));
var_dump(array_diff_assoc($array));
var_dump(array_diff_uassoc($array, $cmp));
var_dump(array_udiff($array, $cmp));
var_dump(array_udiff_assoc($array, $cmp));
var_dump(array_udiff_uassoc($array, $cmp, $cmp));
?>
--EXPECT--
array(1) {
["a"]=>
int(42)
}
array(1) {
["a"]=>
int(42)
}
array(1) {
["a"]=>
int(42)
}
array(1) {
["a"]=>
int(42)
}
array(1) {
["a"]=>
int(42)
}
array(1) {
["a"]=>
int(42)
}
array(1) {
["a"]=>
int(42)
}
array(1) {
["a"]=>
int(42)
}