在Echo语句中使用三元运算符

时间:2017-09-06 03:47:00

标签: php ternary-operator

我正在尝试使用三元运算符,但结果不对。我按照手册但不知道发生了什么。控制台中的输出是混乱的。

PHP

echo '<div class="item'.(($month_number==='09' && $month_year==='2017')?' active"':"").'>';

控制台输出

<div class="item><div class=" m_page="" outer-div"="">
<div class="inner-div" style=""><div class="momo_p"> 

5 个答案:

答案 0 :(得分:2)

在三元运算符后关闭class属性的双引号:

echo '<div class="item' . (($month_number==='09' && $month_year==='2017') ? ' active' : '') . '">';

答案 1 :(得分:1)

echo '<div class="item'.(($month_number==='09' && $month_year==='2017')?' active"':'"').'>';

也许?

答案 2 :(得分:1)

检查你的报价。

echo '<div class="item'.(($month_number==='10' && $month_year==='2017') ? "active" : "").'">

答案 3 :(得分:1)

使用以下代码:

<强> PHP

$active = ($month_number==='09' && $month_year==='2017') ? 'active': '';
echo '<div class="item '.$active.'">';

答案 4 :(得分:1)

这是对一个班轮的重新加工,增加了两个变量来测试代码,使得真实的结果将“活动”连接到“项目”。错误的结果导致“item”与空字符串连接,如下所示:

<?php
$month_number = "08";
$month_year   = "2016";

echo "<div class=\"item";

// making the ternary expression more manageable
$month_result = ($month_number === "09");
$year_result  = ($month_year === "2017");
echo  ($month_result && $year_result)? "active":"";

echo "\"></div>";

直播代码here

注意:如果您希望执行一个echo语句,可以按如下方式编写代码:

$str =  ($month_result && $year_result)? "active":"";
echo "<div class=\"item" . $str  . "\"></div>";

查看实时代码here

虽然您可以对属性使用双引号,对其他所有内容使用单引号,但更容易看到属性的转义双引号,即外部字符串的\“和双引号。