1

この行に「構文エラー、予期しない T_STRING」が表示され、原因を突き止めることができません。Google、このフォーラムなどを検索しましたが、まだ行き詰まっています。

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

foreachPHP では、このように動作します。これは

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

=割り当て用がありません。PHP は、その無限の叡智により、 string が必要であると判断します

于 2013-11-13T20:35:57.520 に答える
1

PHP の「予期しない文字列」エラーは奇妙なものです。多くの場合、実際にはコード内の文字列のように見えるものを示していません。

これは、PHP が定数を処理する方法によるものです。FOOBARたとえば、クラス名やキーワードなど、他のものを表さない文字のシーケンスと同様に、定数にすることができます。ただし、定義されていない場合、PHP はそれを string として扱います'FOOBAR'。これはばかげた動作ですが、これで終わりです。それがあなたのためのPHPです。

このエラーが発生する理由は、 がキーワードではないためです (マニュアルのキーワードのリストをin参照してください)。また、クラス名でもありません (可能性はありますが)。PHP 固有の意味はありません。したがって、PHP はそれを見て、「ああ、明らかに string が必要だ」と考えます。したがって、コードは実質的に次のようになります。'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 に答える