意想不到T_STRING


unexpected T_STRING?

>我在这一行上收到"语法错误,意外T_STRING",无法找到罪魁祸首。搜索了谷歌,这个论坛等,仍然卡住了。

foreach($result in $results){

在此块中:

<?php
  $results = mysql_fetch_array($row_rsCategories);
  $filters = array();
  foreach($result in $results){
    // assuming each result has an array of filters
    $filters = array_merge($filters, $result['filter']);
  }
  $filters = array_unique($filters);
  $csFilters = implode(',',$filters);
?>

我错过了什么?

PHP中的foreach工作方式。它

foreach ($results as $result) //...
$results mysql_fetch_array($row_rsCategories);

缺少分配=。PHP 以其无限的智慧决定你想要一个字符串。

PHP中的"意外字符串"错误是奇怪的事情。它们通常并不实际指示代码中看起来像字符串的内容。

这是因为 PHP 对待常量的方式。 例如,FOOBAR可以是常量,任何不代表其他内容的字母序列(如类名或关键字)也可以是常量。但是,如果尚未定义,PHP 会将其视为字符串'FOOBAR'。这是愚蠢的行为,但我们开始了。这就是适合你的 PHP。

您收到此错误的原因是in不是关键字(请参阅手册中的关键字列表)。它也不是类名(尽管可能是)。它在PHP中没有内在的含义。所以PHP看到了它,并认为"啊哈,你显然想要字符串'in'。因此,您的代码实际上如下所示:

foreach($result 'in' $results){

PHP 现在说,"哦,但是你不能在这里有字符串!这显然是真的。然而,不明显的是,为什么PHP的设计者决定此时最有用的消息是说有一个意外的字符串。非常具有误导性!

但是,正如其他地方所指出的,问题在于您正在尝试执行Javascript循环:

for (result in results) {

你的目标是PHP循环的地方:

foreach ($results as $result) {

在第一行$results后缺少相等 (=) 运算符

它应该是

    <?php
  $results = mysql_fetch_array($row_rsCategories);
  $filters = array();
  foreach($results as $result){
    // assuming each result has an array of filters
    $filters = array_merge($filters, $result['filter']);
  }
  $filters = array_unique($filters);
  $csFilters = implode(',',$filters);
?>

还要在 foreach 语句中将"in"替换为"as"。