No necesariamente, a eso se le llama bucle lógico.
Eso se debe a que necesita una expresión que sea evaluada como verdadera.
Incluso puede ser con for(), etc.
Código PHP:
for (; $item = array_shift($all_items););
El punto es que mientras la expresión se cumpla y en algún punto finalice, entonces el bloque es opcional si puedes abreviar la operación dentro de la misma condición.