Monday 20 November 2017

php - I'm getting a "syntax error, unexpected T_VARIABLE" error. I don't see what I'm doing wrong?

itemprop="text">

I'm getting this error:
"PHP
Parse error: syntax error, unexpected T_VARIABLE in /var/www/vhosts/... on line
66"



Here's my
code:



function combine($charArr,
$k) {

$currentsize = sizeof($charArr);


static $combs = array();
static $originalsize = $currentsize; ###### <--
LINE 66 ######
static $firstcall = true;

if
($originalsize >= $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
}
....

....
}



Any
idea what's wrong?


itemprop="text">
class="normal">Answer



Quoting
rel="noreferrer">the manual (that page is about static
properties, but the same applies for variables)

:





Like any other PHP static variable, static
properties may only be
initialized using a literal
or
constant; expressions are not
allowed
. So while
you may initialize
a static property to an integer or


array (for instance), you may not
initialize it to another variable,
to
a function return value, or to an

object.




You are
using this :



static $originalsize
=
$currentsize;



Which
is initializing with an expression -- and not a
constant.




And here's href="http://fr2.php.net/manual/en/language.variables.scope.php#language.variables.scope.static"
rel="noreferrer">the manual's section that says quite the same about static
variables :





Static variables may be declared as
seen in the examples above.
Trying to
assign values to these variables which
are the result of
expressions will

cause a parse
error.




And, just
in case, here's rel="noreferrer">about
expressions
.




In your case,
to avoid that problem, I suppose you could modify your code, so it looks like this
:



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

$originalsize =
$currentsize;
}


With
that :




  • The static variable
    is initialized with a constant

  • If its value is the
    constant one, assign the dynamic
    value.



No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...