【发布时间】:2011-06-04 18:49:37
【问题描述】:
我想知道在 PHP 中是否可以使用以下内容:
<?php echo "Hello {isset($name) ? $name : 'World'}!\n"; ?>
还是我必须执行以下操作?
<?php echo "Hello " . ( isset($name) ? $name : 'World' ) . "!\n"; ?>
一般来说,我更喜欢替换而不是串联,因为我发现字符串串联会使字符串过长,从而使字符串更难阅读。
其中的上下文是我正在根据数据库查询决定默认情况下应该选择 select 标记中的哪个选项。
完整的上下文:
<?php
echo "
<form action='add_demographics.php' method='post'>
<table>
<input type=hidden name=userId value='{$_SESSION['username']}'/>
<tr><td>User ID:</td><td>{$_SESSION['username']}</td></tr>";
foreach ($inputLabels as $i => $value)
{
echo "
<tr>
<td>{$value['text']}</td>
<td><select name=$i>";
foreach ($value["options"] as $optionName => $optionValue)
{
echo "
<option value=$optionValue {($result[$i]==$optionValue ? ' selected=true' : '')}>$optionValue</option>";
}
echo "
</select></td>
</tr>";
}
echo "
<tr><td><input type='submit' name='submit' value='Submit' /></td></tr>
</table>
</form>";
?>
【问题讨论】:
-
我认为你想做的事情在一个字符串中是不可能的,不。
-
@Pekka:Dunes 正在使用 {},所以它可以正常工作
-
@shankhan:详细吗?据我所知,字符串中的
{}转义并不意味着您可以使用任意表达式并对其进行评估。 -
@shankhan 你是在告诉我这行得通吗?
{isset($name) ? $name : 'World'}怎么样? -
@Pekka:当然可以。在您修改 PHP 源代码树之后。
标签: php variables ternary-operator substitution