PHP Spread Operator в объявлении массива

PHP поддерживает оператор распространения для вариационные функции.

В JavaScript вы можете использовать оператор распространения этот:

var a = [1, 2];
var b = [...a, 3, 4];
console.log(b); // [1, 2, 3, 4]

Тем не менее, пытаясь сделать это в PHP:

$a = [1, 2];
$b = [...$a, 3, 4];
var_dump($b);die;

Результаты в этой ошибке:

Ошибка разбора: синтаксическая ошибка, неожиданное ‘…’ (T_ELLIPSIS), ожидание ‘]’

Использование оператора распространения таким образом не разрешено в PHP? Если да, то есть ли такой же элегантный способ добиться того же эффекта?

13

Решение

Прежде всего, вы ссылаетесь на функцию Variadic с массивами в неправильном смысле.

Вы можете создать свой собственный метод для этого, или вы можете лучше использовать array_merge как предложено @Mark Baker в комментарии под вашим вопросом.

Если вы все еще хотите использовать спред оператора / ...Вы можете реализовать что-то подобное самостоятельно.

<?php
function merge($a, ...$b) {
return array_merge($a,$b);
}

$a = [1, 2];
$b = [3,4];
print_r( merge($a, ...$b));
?>

Но для меня делать это так глупо. Потому что вы все еще должны использовать что-то вроде array_merge. Даже если язык реализует это, за сценой он использует функцию слияния, которая содержит код для копирования всех элементов двух массивов в один массив.
Я написал этот ответ только потому, что вы спросили способ сделать это, а элегантность была вашим требованием.

Более разумный пример:

<?php
$a = [1,2,3,56,564];
$result = merge($a, 332, 232, 5434, 65);
var_dump($result);
?>
7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]