我花了几个小时试图让这段代码发挥作用:
<?php foreach ($stocks as $stock):?>
<option value="<?= $stock('"symbol'") ?>" > <?= $stock("symbol") ?></option>
<?php endforeach ?>
当运行此代码时,我得到一个错误:
分析错误:语法错误,意外的'"symbol ''"(?>"'(T_CONSTANT_ENCAPSED_STRING(,中应包含标识符(T_STRING(/home/jharvard/vhosts/pset7/templates/sell_form.php on line 7
请帮忙!
将其更改为:
<option value="<?= $stock("symbol") ?>" > <?= $stock("symbol") ?></option>
您正在转义不需要转义的引号。
试试这个,只需更改您的引号:
<?php foreach ($stocks as $stock):?>
<option value="<?= $stock('symbol'); ?>" > <?= $stock("symbol"); ?></option>
<?php endforeach ?>
注:未经测试的建议。
这里根本不需要转义引号。''"symbol ''"在这里被当作一个常量来处理,但没有那个名称的常量。
周围的HTML引号只由浏览器评估,对PHP解释器没有任何作用。PHP只会评估里面的东西,而忽略周围的东西,浏览器的HTML解析永远不会在PHP代码中看到引号,只会看到$stock("symbol"(的结果字符串
我不确定您要做什么,但由于您使用了foreach
,我猜这是一个多维数组。
试试这个:
<?php
$stocks = array(
array(
"symbol" => "value2"
),
array(
"symbol" => "value2"
)
);
?>
<select>
<?php foreach ($stocks as $stock):?>
<option value="<?= $stock["symbol"] ?>"> <?= $stock["symbol"] ?></option>
<?php endforeach ?>
</select>
编辑:如果您希望显示具有双引号,请使用以下内容:
<option value="<?= $stock["symbol"] ?>">"<?= $stock["symbol"] ?>"</option>
<?php foreach ($stocks as $stock):?>
<option value="<?= $stock("'"symbol'"") ?>" > <?= $stock("symbol") ?></option>
<?php endforeach ?>
您可以使用单引号,也可以使用类似上面的代码。