The short literal [...] (PHP 5.4) has replaced array(...). Inside it, ...$other spreads another array: integer keys are renumbered, and since PHP 8.1 string keys are allowed, a later one winning as in array_merge(). Destructuring assigns elements to variables by position or by key (PHP 7.1), with empty slots to skip; list() is the older spelling.
<?php
$fiction = ['Dune', 'Emma'];
echo json_encode(['Atlas', ...$fiction, ...['Odes']]), ' ', // renumbered
json_encode([...['cur' => 'USD', 'per_page' => 20], 'per_page' => 50]), "\n"; // PHP 8.1+
$row = ['id' => 42, 'title' => 'Dune', 'price' => 9.99];
['title' => $title, 'price' => $price] = $row; // by key, any order
[, $second, , $fourth] = ['A', 'B', 'C', 'D']; // skip positions
echo "$title $price | $second$fourth\n";
$shelf = ['BK-1', 'BK-2', 'BK-3', 'BK-4', 'BK-5'];
echo json_encode(array_slice($shelf, -2)), ' ', json_encode(array_slice($shelf, 1, 2, true));
$removed = array_splice($shelf, 1, 2, ['NEW-1']); // edits $shelf in place
echo "\n", json_encode($removed), ' ', json_encode($shelf), ' ',
json_encode(array_chunk($shelf, 2)), "\n";["Atlas","Dune","Emma","Odes"] {"cur":"USD","per_page":50}
Dune 9.99 | BD
["BK-4","BK-5"] {"1":"BK-2","2":"BK-3"}
["BK-2","BK-3"] ["BK-1","NEW-1","BK-4","BK-5"] [["BK-1","NEW-1"],["BK-4","BK-5"]]array_slice() copies a run, counting a negative offset from the end and renumbering integer keys unless preserve_keys is true. array_splice() edits the array in place, replacing a run and returning the removed elements. array_chunk() pages a list, as in a product grid. Destructuring also works in foreach, swaps with [$a, $b] = [$b, $a], and binds by reference with & (PHP 7.3).