0
echo "<OPTION value=$data2['product_id']>$data2['product_id']</OPTION>";

这给了我以下错误:

PHP 解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING

你能帮帮我吗?如何修复此错误?

4

5 回答 5

2
echo "<OPTION value=".$data2['product_id'].">".$data2['product_id']."</OPTION>";
于 2012-06-20T10:12:39.623 回答
1

任何一个

echo "<OPTION value=$data2[product_id]>$data2[product_id]</OPTION>";

或者

echo "<OPTION value={$data2['product_id']}>{$data2['product_id']}</OPTION>";
于 2012-06-20T10:12:02.090 回答
1

可以通过将变量包装在花括号内来消除该错误:

echo "<OPTION value={$data2['product_id']}>{$data2['product_id']}</OPTION>";

虽然这会更好(转义输出):

echo '<option value="', 
  htmlspecialchars($data2['product_id']), '">', 
  htmlspecialchars($data2['product_id']), 
  '</option>';
于 2012-06-20T10:12:48.547 回答
1

只需使用:

echo "<OPTION value=$data2[product_id]>$data2[product_id]</OPTION>";

或者

echo "<OPTION value=" . $data2['product_id'] . ">" . $data2['product_id'] . "</OPTION>";

或者

echo sprintf("<OPTION value=%s>%s</OPTION>", $data2['product_id'], $data2['product_id']); // separate logic from presentation

在双引号字符串中引用关联数组或数值数组时,不得使用引号

我建议您在 HTML 属性中使用htmlentities()引号,并使用and htmlspecialchars()forvalue="..."和里面的文本OPTION作为一般的最佳实践。

于 2012-06-20T10:13:07.557 回答
1

我更喜欢使用printf(or sprintf) 而不是将变量放在字符串中,因为我认为它更容易阅读。如果值包含或,您可能还希望使用 HTML 转义值htmlspecialchars以避免错误。<>

$prodid = htmlspecialchars($data2['product_id']);
printf('<OPTION value="%s">%s</OPTION>',
       $prodid,
       $prodid);
于 2012-06-20T10:14:51.497 回答