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? Если да, то есть ли такой же элегантный способ добиться того же эффекта?
Прежде всего, вы ссылаетесь на функцию 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);
?>
Других решений пока нет …