您能在PHP回送标记中回送PHP吗?

您能在PHP回送标记中回送PHP吗?,php,Php,我面临的问题是,只有“rr_pos_1”标记在 由于撇号('),正在输出一个php错误。我是否可以通过使用下面相同的打印方法来避免这个错误 以下是我的php代码: <?php switch (isset($_POST['chk']) ? $_POST['chk'] : null){ case 'Rigid Rail': echo ' <table> <tr> <td

我面临的问题是,只有“rr_pos_1”标记在 由于撇号('),正在输出一个php错误。我是否可以通过使用下面相同的打印方法来避免这个错误

以下是我的php代码:

<?php
switch (isset($_POST['chk']) ? $_POST['chk'] : null){
    case 'Rigid Rail':
        echo '
        <table>
            <tr>
                <td>Notes & Comments: <?php if (isset($_POST['rr_pos_1']) ? $_POST['rr_pos_1'] : null) echo "$rr_pos_1"; ?></th>
            </tr>
        </table>';
}
?>

在案例之后使用语法或结束php解释:

switch ($a) {
case "foo":  ?>
   bla bla html <?php echo $a ?> 
<?php break;
}
开关($a){
案例“foo”:>
blablahtml

注释和评论:

是的,只是不要把它放在PHP标记中。

您也可以稍微编辑自己的代码

我希望自己稍微编辑一下代码,因为我认为应该在切换之前进行检查,并检查它是否存在

<?php
// Check the value exists
$value = (array_key_exists('chk', $_POST) && is_string($_POST['chk']) && !empty($_POST['chk'])) 
       ? $_POST['chk'] : FALSE ;

// Check it passed and holds a value
if ($value)
{
    // Now you know it exists, use the switch
    switch ($value) 
    {
        case "Rigid Rail":
            echo '
            <table>
                <tr>
                    <td>
                    Notes & Comments: 
                    ' . ( isset($_POST['rr_pos_1']) ? $_POST['rr_pos_1'] : '' ) . '
                    </td>
                </tr>
            </table>';
        break;
    }
}

我认为isset不需要三元运算符

<?php
switch (isset($_POST['chk'])){
case 'Rigid Rail':
    ?>
<table>
<tr>
<td>Notes & Comments: <?php if (isset($_POST['rr_pos_1'])) echo "$rr_pos_1"; ?></td>
</tr>
</table>
<?php
}
?>

注释和评论:

你的
如果
在大小写中是错误的,如果设置了
post
,那么你将它检查为
布尔值
,否则你将
空值
检查为
布尔值
,这很奇怪。条件句中的三元组很难读取,而且三元组返回
空值
em直接
if
语句,使用
empty
,例如
if(!empty($\u POST['rr\u pos\u 1']))
你是想回显php字符串
还是仅仅回显变量
$rr_pos_1
?当你试图回显另一组php标记时,你已经在php标记中了。
啊!这很有魅力!不知道你可以这样破坏php!干杯,伙计!别担心-记住将答案标记为你选择的:)第一行可以缩减为:
$value=!empty($\u POST['chk'])?$\u POST['chk']:FALSE;
几乎可以,但由于您需要检查输入是否为字符串,因为它将用于开关(),因此最好在有人跨站点发送数据之前执行此操作,其中包括名为“chk[]的复选框。”只是为了让你感到痛苦:)如果你在开关中使用
isset
,你的箱子将只匹配布尔型(由字符串铸造).明白了。但第二个isset肯定不需要。之所以出现三元运算符,是因为它在回显上一页的数据。如果不检查该数据,它将不会显示在这里。这就是为什么我首先遇到这个问题。但我明白了。实现同一目标的不同方法。
<?php
switch (isset($_POST['chk'])){
case 'Rigid Rail':
    ?>
<table>
<tr>
<td>Notes & Comments: <?php if (isset($_POST['rr_pos_1'])) echo "$rr_pos_1"; ?></td>
</tr>
</table>
<?php
}
?>