Что произойдет, если изменить массив внутри функции?

Ответ

При передаче по значению (по умолчанию) - изменения не видны снаружи:

function modify(array $arr) {
    $arr[0] = 'changed';
}
$data = ['original'];
modify($data);
echo $data[0]; // "original"

При передаче по ссылке - изменения видны:

function modify(array &$arr) {
    $arr[0] = 'changed';
}
$data = ['original'];
modify($data);
echo $data[0]; // "changed"

В момент модификации массива, переданного по значению, срабатывает copy-on-write: PHP создает полную копию массива и модифицирует ее.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.