No,
los elementos de ese array son todos equivalentes a 2 elevado a la N potencia, por lo cuál se debe usar pow().
El código debería quedar así:
Código PHP:
<?php
define("STOP_AT", 512);
$result = array();
for($idx = 0; end($result) < STOP_AT; $idx++) {
$result[] = pow(2, $idx);
}
print_r($result);
El ciclo se inicia con un $idx == 0, de tal manera que el primer elemento del array es 2^0 == 1. Ahora, ya que el límite que hemos definido es 512, que será uno de los elementos del array, la segunda parte del for (la condición para que el ciclo siga) no evaluará el valor de $idx (que sólo es el exponente), sino que debe evaluarse el último valor agregado al array (el resultado). Por eso usamos end($result).
Finalmente, la línea a corregir es la que está dentro del ciclo, pues como ya dijimos, al array se irá agregando el valor de 2 elevado a la "$idx" potencia. Por lo tanto, ahí usamos la función pow().
Saludos,