Что выведет код Middle Функции, замыкания, генераторы обновлено

Рекурсия, ссылки и значения по умолчанию

Вопрос

Что выведет скрипт (PHP 8.3)? По строке на каждый вывод.

<?php
function fill(array &$acc, int $n): void {
    if ($n === 0) return;
    $acc[] = $n;
    fill($acc, $n - 1);
}
function greet(string $name = 'гость', string $mark = '!'): string {
    return "Привет, $name$mark";
}
$list = [];
fill($list, 3);
echo implode(',', $list), "\n";
echo greet(mark: '?'), "\n";
echo greet('Ира'), "\n";

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 3,2,1, Привет, гость?, Привет, Ира! Массив передан по ссылке, поэтому рекурсия накапливает элементы в $list: 3,2,1.

Что выведет

3,2,1
Привет, гость?
Привет, Ира!

Разбор

Массив передан по ссылке, поэтому рекурсия накапливает элементы в $list: 3,2,1. Именованный аргумент mark: пропускает $name, и он берёт значение по умолчанию.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.