Эксперименты в PHP 7.1 (изображение docker nanoninja / php-fpm: 7.1)
В следующем фрагменте кода все ясно:
$arr1 = [1, 2, 3];
foreach ($arr1 as &$value) {
$value *= 2;
}
Мы имеем массив $arr1
и умножаем все значения на 2. Результат:
array(3) {
[0]=>
int(2)
[1]=>
int(4)
[2]=>
&int(6)
}
Но что происходит в этом утверждении:
$arr1 = [1, 2, 3];
foreach ($arr2 = $arr1 as &$value) {
$value *= 2;
}
Результат обоих массивов $arr1
и $arr2
будет неизменным:
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
Почему это происходит? Я знаю, что в PHP> 7 foreach
работает с копией массива, но с копией какого массива он работает в этом случае $arr1
или $arr2
. А почему &
не работают?