non ho provato e probabilmete è una sciocchezza, ma ....

se al posto di
if($x%2==0)

scrivi
if($x = !$x)

e al posto di $x = 0 scrivi $x = false;

dovresti poter ottenere lo stesso risultato con una grande semplificazione per l'interprete, inoltre puoi togliere x++; dal fondo del ciclo

PS: non ho provato

PS2: $x = !$x è proprio scritto cosi, non è un errore la mancanza del secondo uguale