Думаю, моему комментарию может потребоваться дополнительное пояснение, надеюсь, это сделает его более понятным.
Если у меня есть два массива, и я хочу добавить все элементы со второго до конца первого, используя array_push
в сочетании с оператором распаковки позволяет мне сделать это следующим образом:
$a = [1, 2, 3];
$b = [4, 5, 6];
array_push($a, ...$b);
$a
теперь [1, 2, 3, 4, 5, 6]
(array_unshift
позволяет мне сделать то же самое, но добавить элементы в начало массива вместо этого. Использование array_push
, я думаю, делает пример более понятным)
До PHP 7.3, если $b
был пустым, тогда будет выдано предупреждение, так как при распаковке пустого массива эквивалентен передаче только первого аргумента. См. Демонстрацию здесь: https://3v4l.org/GZQoo. $a
все равно останется без изменений, что является желаемым результатом, так что это просто ненужный шум в журналах.
В практическом примере, если $b
генерируется другой функцией (вызовом базы данных и т. c), то без этого изменения мне нужно было бы позвонить if (!empty($b) ...
перед запуском кода, чтобы предотвратить предупреждение. Теперь он работает беззвучно.
Примечание. Существуют и другие способы добавления массива к другому (array_merge
, array_replace
и оператор +
), но все они имеют определенные способы слияния и удаления -дублирование общих ключей. Этот метод просто добавляет все значений второго к первому, независимо от ключей.