Что произойдет при конкатенации оператором .= в цикле?

Ответ

При каждой итерации PHP может выделять новый блок памяти и копировать всю строку + новую часть. Это приводит к квадратичной сложности O(n^2) по памяти и времени.

На практике PHP оптимизирует случай, когда у строки refcount=1 (единственная ссылка) - тогда память расширяется через realloc без копирования. Но если строка имеет другие ссылки, произойдет полное копирование.

Для большого количества итераций (1000+) implode() с массивом или sprintf() предпочтительнее.

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