如何在PHP邮件中使用PHP三元条件运算符?

时间:2018-12-22 19:15:11

标签: php html

在我的PHP文件中,我正在发送一封电子邮件(在HTML启动之前),该电子邮件包含变量,我已成功显示它们,如<td>' . $companyphone . '</td>。这些变量是从不在PHP电子邮件中的HTML代码复制而来的。我只是想“如果$ address2存在,则显示$ address2”。 如何在此电子邮件的html正文中设置if的格式?

/* from HTML (not inside of PHP's mail), what i am copying to PHP's email */

<span><? echo $address1; if ($address2) echo ' ' . $address2; ?></span> 


/* PHP code to send email */

$subject = 'subject foo';
$message = '<html>
      <body>
        <table>
            <tr>
                <td>' . $address2 . '</td>
                // tried below and does not work
                <td>'if ($address2) echo  $address2 . '</td>
            </tr>
        </table>
    </body>
</html>'

3 个答案:

答案 0 :(得分:3)

echo在这里不适用。您没有输出任何东西,只是在构建一个字符串。考虑一下您已经知道如何将值连接到字符串:

'<td>' . $address2 . '</td>'

应用相同的模式,但有条件地使用三元条件运算符:

'<td>' . ($address2 ? $address2 : '') . '</td>'

只要带括号的表达式解析为字符串,就如同将任何字符串连接起来。

当然,请注意,此特定操作没有多大意义。如果$address2是一个字符串值,那么它为空时只会是“ falsey”,对吗?因此最终结果与反正连接值相同:

'<td>' . $address2 . '</td>'

在问题开始的echo示例中,有条件输出的是空格字符。但是在这里,您只是按原样连接字符串,无论它是否具有值。

答案 1 :(得分:-1)

使用?:三元运算符:

/* from HTML (not inside of PHP's mail), what i am copying to PHP's email */

<span><?php echo $address1;
    if ($address2) echo ' ' . $address2; ?></span>

/* PHP code to send email */

<?php
$subject = 'subject foo';
$message = '
<html>
<body>
<table>
    <tr>
        <td>' . $address1 . '</td>
        // tried below and does not work
        <td>' . (($address2) ? $address2 : '') . '</td>
    </tr>
</table>
</body>
</html>';

echo $message;

答案 2 :(得分:-1)

尝试一下。

/* from HTML (not inside of PHP's mail), what i am copying to PHP's email */

<span><? echo $address1;?> <?php echo $address2 ? $address2 : ''; ?></span>

/* PHP code to send email */

$subject = 'subject foo';
$message = "
<html>
<body>
<table>
    <tr>
        <td>$address1</td>
        // tried below and does not work
        <td>{$address2 ? $address2 : ''}</td>
    </tr>
</table>
</body>
</html>";