>我在这一行上收到"语法错误,意外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"。