Я получаю эту ошибку: «Ошибка PHP Parse: ошибка синтаксиса, неожиданный T_VARIABLE в / var / www / vhosts / … в строке 66»
Вот мой код:
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 } .... .... }
Любая идея, что не так?
Цитирование руководства (эта страница посвящена статическим свойствам, но то же самое относится и к переменным) :
Как и любая другая статическая переменная PHP, статические свойства могут быть инициализированы только с использованием литерала или константы; выражения не допускаются . Поэтому, хотя вы можете инициализировать статическое свойство для целого или массива (например), вы не можете инициализировать его другой переменной, возвращаемым значением функции или объектом.
Вы используете это:
static $originalsize = $currentsize;
Что инициализируется выражением – а не константой.
И вот раздел руководства, в котором говорится о статических переменных:
Статические переменные могут быть объявлены как показано в приведенных выше примерах. Попытка присвоить значения этим переменным, являющимся результатом выражений, вызовет ошибку синтаксического анализа.
И, на всякий случай, речь идет о выражениях .
В вашем случае, чтобы избежать этой проблемы, я полагаю, вы можете изменить свой код, поэтому он выглядит так:
$currentsize = sizeof($charArr); static $originalsize = null; if ($originalsize === null) { $originalsize = $currentsize; }
При этом:
static $originalsize = $currentsize; ###### <-- LINE 66 ######
Вы не можете передать переменную в качестве значения по умолчанию для статической переменной. Вместо этого выполните следующие действия:
static $originalsize; $originalsize = $currentsize;
Чтобы процитировать руководство php :
Как и любая другая статическая переменная PHP, статические свойства могут быть инициализированы только с использованием литерала или константы; выражения не допускаются. Поэтому, хотя вы можете инициализировать статическое свойство для целого или массива (например), вы не можете инициализировать его другой переменной , возвращаемым значением функции или объектом.
Из руководства php :
Как и любая другая статическая переменная PHP, статические свойства могут быть инициализированы только с использованием литерала или константы; выражения не допускаются. Поэтому, хотя вы можете инициализировать статическое свойство для целого или массива (например), вы не можете инициализировать его другой переменной, возвращаемым значением функции или объектом.