Приятно, что все объяснили почему.
Это потому, что по умолчанию PHP будет обрабатывать все до того, как он «сбросит» что-либо в браузер.Просто печатая каждую строку, она сохраняет эту информацию в буфере, который будет напечатан одновременно с завершением выполнения PHP.
Если вы хотите, чтобы PHP сразу же после строки выгружал этот контент в браузер, вам нужноВызывайте flush()
после каждого, затем он будет выводить текст по одной строке после каждого вызова.