php if / else with concatenation

时间:2014-07-21 13:06:34

标签: php if-statement concatenation

我有这样的错误:解析错误:语法错误,第132行/home/user/public_html/page.php中的意外T_IF

这是代码:

<td><b>".$row['extension']."</b></td>
<td>".$row['curprefix']." ".if {($row['msetupfee'] =='-1.00') { echo 'N/D'; } else {$row['msetupfee'];}."</td>
<td>".$row['curprefix']." ".$row['qsetupfee']."</td>

第132行是:

 <td>".$row['curprefix']." ".if {($row['msetupfee'] =='-1.00') { echo 'N/D'; } else {$row['msetupfee'];}."</td>

5 个答案:

答案 0 :(得分:4)

你不能在连接字符串的过程中放入IF。要么之前做IF,要么传递你有IF的值

if ($row['msetupfee'] =='-1.00') {
    $v = "N/D";
}
else {
    $v = $row['msetupfee'];
}

// 
// Other code
//
..."<td>" . $row['curprefix'] . " " . $v ."</td>"...

或者这样做......

..."<td>" . $row['curprefix'] . " " . ($row['msetupfee'] =='-1.00' ? 'N/D' : $row['msetupfee']) . "</td>"...

答案 1 :(得分:2)

您可以使用三元语句来实现此目的:

<?php 
    if {($row['msetupfee'] =='-1.00') { echo 'N/D'; } else {$row['msetupfee'];}
?>

成为

<?php 
    echo (($row['msetupfee'] =='-1.00') ?'N/D':$row['msetupfee']);
?>

所以:

echo "<td>".$row['curprefix']." ".if {($row['msetupfee'] =='-1.00') { echo 'N/D'; } else {$row['msetupfee'];}."</td>"

成为

echo "<td>".$row['curprefix']." ".(($row['msetupfee'] =='-1.00') ?'N/D':$row['msetupfee'])."</td>"

答案 2 :(得分:1)

如果您想在字符串中添加if,请使用&#39;?&#39;

"<td>".$row['curprefix']." ". $row['msetupfee'] == '-1.00' ?  'N/D' : $row['msetupfee']."</td>";

答案 3 :(得分:0)

您不能在字符串连接的中间放置if语句。您可以在外部使用if语句并根据条件更改变量,然后在连接中打印该变量。

<?php
$vb;

if ($row['msetupfee'] =='-1.00') { 
    $vb = 'N/D'; 
} else {
    $vb = $row['msetupfee'];
}

echo "<td>".$row['curprefix']." ".$vb</td>";
?>

答案 4 :(得分:0)

由于您在发布代码时省略了echo,我猜您尝试做的是:

<?php
echo "<td><b>".$row['extension']."</b></td>
<td>".$row['curprefix']." ".if {($row['msetupfee'] =='-1.00') { echo 'N/D'; } else {$row['msetupfee'];}."</td>
<td>".$row['curprefix']." ".$row['qsetupfee']."</td>";
?>

问题

  • 您不能在echo语句中使用控制结构。
  • 即使可以,您的if语句也有语法错误:if {(condition) { ... }错误!它应该是if (condition) { ... }

你可以做几件事。

将控制结构带到另一条线

<?php
echo "<td><b>".$row['extension']."</b></td><td>".$row['curprefix'];

if ($row['msetupfee'] =='-1.00') {
    echo 'N/D';
} else {
    $row['msetupfee'];
}

echo "</td><td>".$row['curprefix']." ".$row['qsetupfee']."</td>";
?>

使用功能

<?php
function getSetupFee($msetupfee) {
    if ($msetupfee =='-1.00') {
        return 'N/D';
    } else {
        return $msetupfee;
    }
}

echo "<td><b>".$row['extension']."</b></td><td>".$row['curprefix'].
     getSetupFee($row['msetupfee']).
     "</td><td>".$row['curprefix']." ".$row['qsetupfee']."</td>";
?>

从标记中获取逻辑:推荐

您遇到了这些问题,因为您将HTML和代码混合在一起。

混合标记(HTML)和业务逻辑的方式实际上是不可读的。将标记和逻辑分开会很好。此外,保留HTML的层次结构是一种很好的做法。

最简单的方式可以做到这一点:

<td>
    <b><?php echo $row['extension']; ?></b>
</td>
<td>
    <?php
        echo $row['curprefix'];

        if ($row['msetupfee'] == '-1.00') {
            echo 'N/D';
        } else {
            $row['msetupfee'];
        }
    ?>
</td>
<td>
    <?php echo $row['curprefix']." ".$row['qsetupfee']. ?>
</td>

在这个重新分解的代码中,很明显你正在创建三个表格单元格,以及在单元格内打印的值。