@Absolute138

Почему ломается передача по ссылке в foreach с указанием оператора опциональной последовательности для массива?

$a = [1,2,3];
foreach($a ?? [] as &$el) {
    $el += 1;
}
var_dump($a);

Результат:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

Без проверки:
$a = [1,2,3];
foreach($a as &$el) {
    $el += 1;
}
print_r($a);

Результат:
Array
(
    [0] => 2
    [1] => 3
    [2] => 4
)
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
Adamos
@Adamos
Потому что вычисление $a ?? [] имеет результатом копию массива, на нее и ссылается переменная цикла. Оригинальный массив в цикл вообще не попадает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы