mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
27cd7a11cb
This adds support for: $array1 = ['a' => 1, 'b' => 2]; $array2 = ['b' => 3, 'c' => 4]; $array = [...$array1, ...$array2]; // => ['a' => 1, 'b' => 3, 'c' => 4] RFC: https://wiki.php.net/rfc/array_unpacking_string_keys Closes GH-6584.
59 lines
815 B
PHP
59 lines
815 B
PHP
--TEST--
|
|
Array unpacking with string keys
|
|
--FILE--
|
|
<?php
|
|
|
|
// Works with both arrays and Traversables.
|
|
$array = [1, 2, "foo" => 3, 4];
|
|
var_dump([...$array]);
|
|
|
|
$iterator = new ArrayIterator([1, 2, "foo" => 3, 4]);
|
|
var_dump([...$iterator]);
|
|
|
|
// Test overwriting behavior.
|
|
$array1 = ["foo" => 1];
|
|
$array2 = ["foo" => 2];
|
|
var_dump(["foo" => 0, ...$array1, ...$array2]);
|
|
var_dump(["foo" => 0, ...$array1, ...$array2, "foo" => 3]);
|
|
|
|
// Test numeric string key from iterator.
|
|
function gen() {
|
|
yield "42" => 42;
|
|
}
|
|
var_dump([...gen()]);
|
|
|
|
?>
|
|
--EXPECT--
|
|
array(4) {
|
|
[0]=>
|
|
int(1)
|
|
[1]=>
|
|
int(2)
|
|
["foo"]=>
|
|
int(3)
|
|
[2]=>
|
|
int(4)
|
|
}
|
|
array(4) {
|
|
[0]=>
|
|
int(1)
|
|
[1]=>
|
|
int(2)
|
|
["foo"]=>
|
|
int(3)
|
|
[2]=>
|
|
int(4)
|
|
}
|
|
array(1) {
|
|
["foo"]=>
|
|
int(2)
|
|
}
|
|
array(1) {
|
|
["foo"]=>
|
|
int(3)
|
|
}
|
|
array(1) {
|
|
[0]=>
|
|
int(42)
|
|
}
|