Recibo un error de “error de syntax, T_VARIABLE inesperado”. No veo lo que estoy haciendo mal?

Recibo este error: “Error de PHP Parse: error de syntax, inesperado T_VARIABLE en / var / www / vhosts / … en la línea 66”

Aquí está mi código:

function combine($charArr, $k) { $currentsize = sizeof($charArr); static $combs = array(); static $originalsize = $currentsize; ###### = $k) { # Get the First Combination $comb = ''; if ($firstcall) { //if this is first call for ($i = $originalsize-$k; $i < $originalsize; $i++) { $comb .= $charArr[$i]; } $combs[] = $comb; //append the first combo to the output array $firstcall = false; //we only want to do this during the first iteration } .... .... } 

¿Alguna idea de lo que está mal?

Citando el manual (esa página es sobre propiedades estáticas, pero lo mismo se aplica a las variables) :

Al igual que cualquier otra variable estática de PHP, las propiedades estáticas solo se pueden inicializar utilizando un literal o constante; las expresiones no están permitidas Por lo tanto, aunque puede inicializar una propiedad estática en un entero o matriz (por ejemplo), no puede inicializarla a otra variable, a un valor de retorno de función oa un objeto.

Usted está usando esto:

 static $originalsize = $currentsize; 

Que se está inicializando con una expresión, y no una constante.

Y aquí está la sección del manual que dice lo mismo acerca de las variables estáticas:

Las variables estáticas se pueden declarar como se ve en los ejemplos anteriores. Intentar asignar valores a estas variables que son el resultado de expresiones provocará un error de análisis.

Y, por las dudas, aquí hay expresiones .

En su caso, para evitar ese problema, supongo que podría modificar su código, por lo que se ve así:

 $currentsize = sizeof($charArr); static $originalsize = null; if ($originalsize === null) { $originalsize = $currentsize; } 

Con ese :

  • La variable estática se inicializa con una constante
  • Si su valor es constante, asigne el valor dynamic.
 static $originalsize = $currentsize; ###### <-- LINE 66 ###### 

No puede pasar una variable como el valor predeterminado de una variable estática. En cambio, haz lo siguiente:

 static $originalsize; $originalsize = $currentsize; 

Para citar el manual php :

Al igual que cualquier otra variable estática de PHP, las propiedades estáticas solo se pueden inicializar utilizando un literal o constante; las expresiones no están permitidas Por lo tanto, aunque puede inicializar una propiedad estática en un entero o matriz (por ejemplo), no puede inicializarla a otra variable , a un valor de retorno de función oa un objeto.

De php manual :

Al igual que cualquier otra variable estática de PHP, las propiedades estáticas solo se pueden inicializar utilizando un literal o constante; las expresiones no están permitidas Por lo tanto, aunque puede inicializar una propiedad estática en un entero o matriz (por ejemplo), no puede inicializarla a otra variable, a un valor de retorno de función oa un objeto.