PHP如何在echo块中放置if语句

时间:2015-11-29 18:32:15

标签: php if-statement echo

我有以下if语句:

<?php if ( isset ( $prfx_stored_meta['wedding-user'] ) ) selected( $prfx_stored_meta['wedding-user'][0], 'select-one' ); ?>

我需要插入到这个echo语句中:

$users = get_users();
$i = 0;
// Array of WP_User objects.
foreach ( $users as $user ) {
    echo "<option value='select-$i' >" . esc_html( $user->display_name ) . "</option>";
    $i++;
}

在关闭<option>标记之前 我不确定如何在echo

中添加if语句

3 个答案:

答案 0 :(得分:2)

<强>不

暂时忽略输出嵌入echo语句中的HTML这样的反模式(考虑使用模板引擎!),您将通过混合逻辑和您的逻辑来使您的代码难以阅读内容甚至更多,如果你在这里使用条件运算符 *,你将会做的。

事实上,一般来说,如果输出语句中除了基本字符串插值之外还有其他内容,那么就不能将逻辑和内容分开。

在这里,它看起来像这样:

$users = get_users();
$i = 0;
// Array of WP_User objects.
foreach ( $users as $user ) {
   echo "<option value='select-$i' ";
   if (isset($prfx_stored_meta['wedding-user']))
      echo selected($prfx_stored_meta['wedding-user'][0], 'select-one');
   echo ">" . esc_html( $user->display_name ) . "</option>";

   $i++;
}

看看它有多乱?使用条件运算符的长行将是甚至更糟

*不是“三元运算符”! “三元”是它的本位,而不是它的名字。

答案 1 :(得分:1)

您必须使用三元运算符:www.php.net/ternary

试试这个:

echo "<option value='select-$i' >" . esc_html( $user->display_name ) . ((isset($prfx_stored_meta['wedding-user'])?selected( $prfx_stored_meta['wedding-user'][0], 'select-one'):'')."</option>";

来源:if block inside echo statement?

答案 2 :(得分:0)

您将需要使用一个三元运算符作为缩短的IF / Else语句。