我正在使用服务器编写我的很多页面的html来处理一些分页。我在注释插入的正下方的行上遇到语法错误,如下所示。我猜这是因为我试图在回声中放置回声?我在这里尝试了很多东西,并且没有运气弄清楚我做错了什么。任何帮助都非常赞赏!
<?php
PDO STUFF HERE. . .
if() {
foreach() {
echo ' <input name="flyer" type="file" id="'.$row['ad_link'].'" tabindex="9" /></td>
//following line showing syntax error in my text editor
<input name="transaction" type="radio" tabindex="11" value="0"' . if($transaction == '0') echo '$chkvalue'; . '/><label for="listings">Listings</label>
//following line showing syntax error in my text editor
<input style="margin-left:20px;" name="transaction" type="radio" tabindex="12" value="1"' . if($transaction == '1') echo $chkvalue; . '/> '
}
}
?>
答案 0 :(得分:2)
if和echo是语言结构,因此不能在字符串中使用。您必须更改逻辑流程才能解决此问题。
最简单的解决方法就是使用一堆分号。
这是不允许的:
echo 'abc' . if( $a == 1 ) { echo '3'; };
但这很好,因为它将所有内容分解为步骤:
echo 'abc';
if( $a == 1 ) { echo '3'; }
答案 1 :(得分:1)
尝试这样的事情:
echo '<input name="flyer" type="file" id="'.$row['ad_link'].'" tabindex="9" /></td>
<input name="transaction" type="radio" tabindex="11" value="0"'.($transaction == '0') ? $chkvalue:"".'/><label for="listings">Listings</label>
<input style="margin-left:20px;" name="transaction" type="radio" tabindex="12" value="1"' .($transaction == '1') ? $chkvalue:"".'/>';
使用?
运算符,您可以检查条件并在其等同时回显某些内容,如果不相等则不回显。
答案 2 :(得分:0)
您无法连接整个if
语句。它无法转换为字符串。
您可以将其更改为ternary operator的表达式:
echo 'first part of your string ' . ($transaction == '0'?'$chkvalue':'') . ' rest of your string';
更好(我认为),你可以将HTML放在PHP标签之外。您可以再次短暂打开PHP标记以执行if
语句以有条件地回显值,或者您可以使用<?= XYZ ?>
的简称<?php echo XYZ ?>
标记。
这种工作方式在处理大量HTML时非常方便,因为大多数语法高亮显示器实际上都会突出显示HTML,并且您不需要转义任何内容。如果您之前准备好“变量”并使用短<?=
标记插入它们,那么您的HTML看起来就像一块干净的模板式代码,其中只包含那些变量。
<?php
foreach( ... )
{?>
<input name="flyer" type="file" id="<?=$row['ad_link']?>" tabindex="9" /></td>
<input name="transaction" type="radio" tabindex="11"
value="0" <? if($transaction == '0') echo $chkvalue; /* Actual statement */ ?>/>
<label for="listings">Listings</label>
<input style="margin-left:20px;" name="transaction" type="radio" tabindex="12"
value="1" <?= ($transaction == '1'? $chkvalue : '') /* Just output an expression */ ?>/>
<?}