1

我在这一行收到“语法错误,意外的 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);
?>

我错过了什么?

4

4 回答 4

9

foreach在 PHP 中可以正常工作。它是

foreach ($results as $result) //...
于 2013-11-13T20:36:25.743 回答
4
$results mysql_fetch_array($row_rsCategories);

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

于 2013-11-13T20:35:57.520 回答
1

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) {
于 2013-11-13T20:42:26.693 回答
0

您在第一行的 $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”。

于 2013-11-13T20:38:04.390 回答