Выбор ответа Middle Массивы изнутри спрашивают часто обновлено
Ловушка foreach по ссылке
Вопрос
Что выведет код?
$arr = [1, 2, 3];
foreach ($arr as &$v) {}
foreach ($arr as $v) {}
echo implode(', ', $arr);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 1, 2, 2. После первого цикла $v осталась ссылкой на последний элемент массива.
Варианты ответа
1, 2, 31, 2, 2правильный ответ3, 3, 31, 1, 1
Разбор
После первого цикла $v осталась ссылкой на последний элемент массива. Второй цикл присваивает $v (то есть последнему элементу) по очереди 1, 2, а на третьем шаге сам последний элемент, который уже равен 2. Итог [1, 2, 2]. Лечится unset($v) сразу после цикла по ссылке.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.