【问题标题】:PHP Parse Error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRINGPHP 解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING
【发布时间】:2011-11-07 07:05:52
【问题描述】:

过去五分钟我一直在尝试调试它,我只是不明白问题是什么:

这是我的代码,第 33 - 37 行:

for($i = 0; $i < 5; $i++) {
    $followers_change[$i] = $en_array1[$i]['followers']-$en_array2[$i]['followers'];
    $rank_change[$i] = $en_array1[$i]['rank']-$en_array2[$i]['rank'];
        echo "<tr><td>$en_array1[$i]['rank']</td><td><img src='$en_array1[$i]['imageurl']' width='48' height='48'/></td><td>$en_array1[$i]['name']</td><td>$en_array1[$i]['followers]'</td><td>$en_array1['followers_change']</td></tr>";
}

我不断收到错误:

解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,在第 36 行的 /.../ 中需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING

我很抱歉这是一个如此愚蠢/新手的错误,我只是同时感到难过和疲倦(这不是一个好的组合:))。

【问题讨论】:

  • 我个人避免在字符串中使用数组下标,因为它会使您更难检测到的那种错误。
  • 双引号中的字符串插值遵循特定规则。如有疑问,请使用花括号语法。

标签: php


【解决方案1】:

关注者键错误,您应该使用以下代码:

  for($i = 0; $i < 5; $i++) {
      $followers_change[$i] = $en_array1[$i]['followers']-$en_array2[$i]['followers'];
      $rank_change[$i] = $en_array1[$i]['rank']-$en_array2[$i]['rank'];
          echo "<tr><td>" . $en_array1[$i]['rank'] . "</td><td><img src='" . $en_array1[$i]['imageurl'] . "' width='48' height='48'/></td><td>" . $en_array1[$i]['name'] . "</td><td>" . $en_array1[$i]['followers'] . "'</td><td>" . $en_array1['followers_change'] . "</td></tr>";
  }

【讨论】:

  • $en_array1[$i]['f​​ollowers] 无效
  • 谢谢,未能正确封装+关注者的关键问题是问题:)!老实说,我没有意识到我必须封装一个变量,因为有时一个字符串似乎可以很好地回显包含没有封装的变量,而不是它似乎没有的时候。知道为什么会发生后者吗?会不会是因为src='$en_array1[$i]['followers']'?
  • 欢迎您,这是个好问题。您可能是对的,我将不得不深入研究以找出原因。
  • 为什么不使用 echo "{$en_array1[$i]['rank']}...?
  • 这是个人喜好,我认为使用引号和点更容易阅读。
【解决方案2】:

见:

 .... ><td>$en_array1[$i]['followers]'</td ...

你看到followers]后面不匹配的'了吗?

【讨论】:

    【解决方案3】:
    <?
    
    for($i = 0; $i < 5; $i++) {
        $followers_change[$i] = $en_array1[$i]['followers']-$en_array2[$i]['followers'];
        $rank_change[$i] = $en_array1[$i]['rank']-$en_array2[$i]['rank'];
            echo "<tr><td>{$en_array1[$i]['rank']}</td><td><img src='{$en_array1[$i]['imageurl']}' width='48' height='48'/></td><td>{$en_array1[$i]['name']}</td><td>{$en_array1[$i]['followers']}</td><td>{$en_array1['followers_change']}</td></tr>";
    }
    

    你缺少',你应该在你的变量周围使用{}

    【讨论】:

      【解决方案4】:

      您应该使用 {} 将变量封装在该字符串中,或​​者使用 .串联。

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签