意想不到的T_STRING?

时间:2013-11-13 20:34:20

标签: php foreach

我在这一行收到“语法错误,意外的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 个答案:

答案 0 :(得分:9)

PHP中的

foreach可以解决问题。它&#39; S

foreach ($results as $result) //...

答案 1 :(得分:4)

$results mysql_fetch_array($row_rsCategories);

缺少=作业。 PHP,以其无限的智慧,decides that you want a string

答案 2 :(得分:1)

PHP中的“意外字符串”错误是奇怪的事情。它们通常不会在代码中指示看起来像字符串的内容。

这是因为PHP如何处理常量。例如,FOOBAR可以是常量,也可以是任何不代表其他内容的字母序列,如类名或关键字。但是,如果尚未定义,PHP会将其视为字符串'FOOBAR'。这是愚蠢的行为,但我们走了。那是你的PHP。

您收到此错误的原因是in不是关键字(请参阅手册中的list of keywords)。它也不是一个类名(虽然它可能是)。它在PHP中没有固有的含义。所以PHP看到它,并认为“啊哈,你显然想要字符串'in'。”所以你的代码有效地看起来像这样:

foreach($result 'in' $results){

PHP现在说,“哦,但你不能在这里找到一个字符串!”这显然是正确的。然而,不明显的是,为什么PHP的设计者决定此时最有用的信息是说有一个意外的字符串。非常误导!

但问题,如其他地方所示,是你试图做一个Javascript循环:

for (result in results) {

你的目标是PHP循环:

foreach ($results as $result) {

答案 3 :(得分:0)

在第一行$ result后,你缺少等号(=)运算符

应该是

    <?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”。