问题
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?
回答1:
Quoting 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 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 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.
回答2:
static $originalsize = $currentsize; ###### <-- LINE 66 ######
You can't pass a variable as the default value of a static variable. Instead, do the following:
static $originalsize;
$originalsize = $currentsize;
回答3:
To quote the php manual:
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.
回答4:
From php manual:
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.
来源:https://stackoverflow.com/questions/5122729/im-getting-a-syntax-error-unexpected-t-variable-error-i-dont-see-what-im