在echo或print中使用echo或pint的PHP语法

时间:2014-11-26 20:30:08

标签: php echo

我正在使用服务器编写我的很多页面的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; . '/> ' 
          }
     }

?>

3 个答案:

答案 0 :(得分:2)

ifecho是语言结构,因此不能在字符串中使用。您必须更改逻辑流程才能解决此问题。

最简单的解决方法就是使用一堆分号。

这是不允许的:

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 */ ?>/>
<?}