我在这一行收到“语法错误,意外的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);
?>
我错过了什么?
答案 0 :(得分:9)
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”。