Стоит задача соединить два нумерованных массива таким образом, чтобы элементы второго массива заменили элементы в первом. Ясное дело, здесь нужно сложение без переиндексации, то есть используем обычный оператор сложения:
$arr1 = ['x', 'y', 'z', 'o'];
$arr2 = ['a', 'b', 'c'];
$arr1 = $arr1 + $arr2;
print_r($arr1);
Здесь всё очевидно - к первому добавляется второе, на первый массив "накладывается" второй, и мы получим [a, b, c, o]. Но внезапно:
Array ( [0] => x [1] => y [2] => z [3] => o )
То есть получилось с точностью до наоборот - первый массив наложился на второй!
Ладно, хорошо, допустим, так у нас работает оператор сложения, первый операнд добавляется ко второму...
В таком случае более логично должен работать оператор увеличения, то есть прибавления:
$arr1 = ['x', 'y', 'z', 'o'];
$arr2 = ['a', 'b', 'c'];
$arr1 += $arr2;
print_r($arr1);
То есть тут прямо написано "увеличь первую переменную на то, что записано во второй".
Но опять фейл:
Array ( [0] => x [1] => y [2] => z [3] => o )
Что за ерунда, товарищи? Это везде так сложение работает, или это специфика PHP? Код же нечитабельный получается, если я напишу:
$arr1 = $arr2 + $arr1;
- я получу конечно то что хотел изначально, но в коде это будет читаться как наложение первого на второе... Да и тут явно написано лишний раз $arr1, а оператор += я не могу использовать, так как он работает наоборот..
Есть какой-то оператор или функция, чтобы массивы были по-человечески расположены?