【问题标题】:php method unexpected t_string [duplicate]php方法意外的t_string [重复]
【发布时间】:2013-12-06 17:18:16
【问题描述】:

我正在研究一种 php 方法,该方法在方法主体的第三行出现语法错误。注释掉该行对我没有任何作用。只有注释掉整个方法,它才会真正消失。我在这里遗漏了什么吗?

public function get(Array $array) {
    if(array_key_exists('data', $array)) {
        if($array['data'] == '*') {
            $fieldString = '*';
        } else { 
            $fieldString = '';
            for($x=0; $x < count($array['data']); $x++) {
                if($x == count($array['data']) - 1 ) {
                    $fieldString .= $array['data'][$x].' ';
                } else {
                    $fieldString .= $array['data'][$x].', ';
                }
            }
        }
        if(array_key_exists('table', $array)) {
            $table = $array['table'];
        }
        if(array_key_exists('conditions', $array)) {
            $condition = $array['conditions'];
            $filter = '';
            foreach($condition['cond'] as $cond) {
                if(array_key_exists('type', $cond)) { 
                    $filter .= $cond['type'].' ';
                }
                if(array_key_exists('field', $cond)) {
                    $filter .= $cond['field']. ' = '; 
                }
                if(array_key_exists('value', $cond)) {
                    $filter .= $cond['value'];
                }
            }
        }

        $result = $mysqli->query("SELECT ".$fieldString." FROM ".$table. " ".$filter);
        $response = $result->fetch_assoc();
        if(!empty($response)) {
            return $response;
        } else {
            echo 'response array from get model is empty';
        }
    } else {
        echo '<h3>array data not set for _get() in model </h3>';
    }    
}

【问题讨论】:

  • 哪一行给出了错误?
  • 会不会是您缺少}
  • 去掉public这个词;)
  • 我将您的方法复制到类定义中并且没有出错。您发布的内容与您的真实代码之间一定存在差异。
  • 尝试发布其余代码。我刚刚复制了你的方法,它解析得很好。

标签: php arrays methods syntax-error


【解决方案1】:

是类中包含的方法。有时我不小心把一个类函数放在类文件的末尾,但在结尾 } 之外。如果不是类方法,去掉'public'。

【讨论】:

  • 当我尝试在类外部定义此方法时,我得到一个parse error,而不是unexpected T_STRING
  • 好收获。我看到了 (T_PUBLIC) 并建立了联系。
  • 我把这个方法放在类 Model { function get(){ ... } } 中。我确实检查以确保类大括号围绕它关闭,并且该类中的所有其他代码都被注释掉以消除其他因素
【解决方案2】:

将 $mysqli->query() 改为 $this->mysqli->query()

我假设您创建了一个类方法 mysqli,但您在没有'$this' 的情况下调用它。 如果mysqli是php函数,应该是mysqli_query($this->token, "query")

尽管如此,您应该得到“未定义的变量”。无论如何 $mysqli 在这个方法中是未定义的。

【讨论】: