我有一个很好用的例子:
$text = 'Lorem Ipsum';
$html = <<<HTML
<div>
<span>$text</span>
</div>
HTML;
现在如何以正确的方式选择选项2:
$val = 2;
$html = <<<HTML
<select>
<option if ($val == 1) {echo 'selected';} >Option 1</option>
<option if ($val == 2) {echo 'selected';} >Option 2</option>
<option if ($val == 3) {echo 'selected';} >Option 3</option>
</select>
HTML;
答案 0 :(得分:1)
我认为这是模板引擎的工作 - 但不用担心,这很容易使用。
只有您需要的是使用composer准备项目,然后轻松安装其中一个模板引擎(对于此示例,我选择了Latté)。
安装作曲家:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
之后安装Latté:
php composer.phar require latte/latte
最后,你可以创建这样的东西:
$latte = new \Latte\Engine;
$latte->setTempDirectory('/path/to/tempdir');
$parameters['val'] = 2;
$html = $latte->renderToString('template.latte', $parameters);
并将此内容放入同一目录中的“template.latte”文件中:
<select>
{foreach [1, 2, 3] as $key}
<option {if $val === $key}>Option {$key}</option>
{/foreach}
</select>
专业人士使用此解决方案有很多原因:
顺便说一下,你总是应该在PHP中使用三等份(比较变量的类型)。它更安全,你可以使用这个原则节省大量的调试时间: - )。
答案 1 :(得分:0)
您必须将if
语句移出heredoc:
$sel1 = $sel2 = $sel3 = '';
if ($val == 1) $sel1 = ' selected';
else if ($val == 2) $sel2 = ' selected';
else if ($val == 3) $sel3 = ' selected';
$html = <<<HTML
<select>
<option$sel1>Option 1</option>
<option$sel2>Option 2</option>
<option$sel3>Option 3</option>
</select>
HTML;
您可以使用variable variables缩短if
/ else
阶梯:
$sel1 = $sel2 = $sel3 = '';
${"sel$val"} = ' selected';
$html = <<<HTML
<select>
<option$sel1>Option 1</option>
<option$sel2>Option 2</option>
<option$sel3>Option 3</option>
</select>
HTML;
您还可以使用数组缩短空字符串分配:
$sels = array_fill (1, 3, '');
$sels[$val] = ' selected';
$html = <<<HTML
<select>
<option{$sels[1]}>Option 1</option>
<option{$sels[2]}>Option 2</option>
<option{$sels[3]}>Option 3</option>
</select>
HTML;
注意:以上是未经测试的;我在手机上输入了它。