Функция readdir(), как правило, используется вместе с while.
За один цикл нужно только один раз вызвать readdir, чтобы можно было поработать с дескриптором элемента каталога, не перейдя на другой элемент, поэтому появится такая неуклюжесть :
while(true)
{
$f = readdir($d);
if($f === fasle)
{ break; }
// Сделать что-то с $f в противном случае.
}
А если писать присваивание в одну строчку, там же, где хотим выйти из цикла, то получается очень компактно.
Возможно, стиль кода по while плавно перешел в if.