我收到“语法错误,意外的T_VARIABLE”错误。我不明白我做错了什么?

时间:2011-02-25 21:14:59

标签: php syntax-error parse-error

我收到此错误: “PHP Parse错误:语法错误,第66行/ var / www / vhosts / ...中的意外T_VARIABLE”

这是我的代码:

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
        }
    ....
    ....
}

知道什么是错的吗?

4 个答案:

答案 0 :(得分:7)

引用the manual (该页面是关于静态属性的,但同样适用于变量)

  

与任何其他PHP静态变量一样,静态属性可能只是   使用文字或文字初始化   不变;表达式不是   允许即可。所以你可以初始化   静态属性为整数或   数组(例如),你可能没有   将其初始化为另一个变量to   一个函数返回值,或一个   对象

你正在使用这个:

static $originalsize = $currentsize;

使用表达式初始化 - 而不是常量。


这里的the manual's section对静态变量的说法非常相似:

  

静态变量可以声明为   在上面的例子中可以看到。尝试去   为这些变量赋值   是表达式的结果   导致解析错误。

而且,以防万一,这里是about expressions


在你的情况下,为了避免这个问题,我想你可以修改你的代码,所以它看起来像这样:

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

有了这个:

  • 使用常量
  • 初始化静态变量
  • 如果其值为常数,则指定动态值。

答案 1 :(得分:3)

static $originalsize = $currentsize; ###### <-- LINE 66 ######

您不能将变量作为静态变量的默认值传递。相反,请执行以下操作:

static $originalsize;
$originalsize = $currentsize;

答案 2 :(得分:0)

引用php manual

  

与任何其他PHP静态变量一样,静态属性只能使用文字或常量初始化;表达式是不允许的。因此,虽然您可以将静态属性初始化为整数或数组(例如),但可能不会将其初始化为另一个变量,函数返回值或对象。

答案 3 :(得分:0)

来自php manual

  

与任何其他PHP静态变量一样,静态属性只能使用文字或常量初始化;表达式是不允许的。因此,虽然您可以将静态属性初始化为整数或数组(例如),但您可能不会将其初始化为另一个变量,函数返回值或对象。