我仍然是php的新手,我在我的后端框架中使用codeigniter。
我有一个table.php
文件,可以实时生成一个html表。然后,我遇到了一些问题。
$output_string .= "<td>".($row->isactive == "0") ? "Activated":"Deactivated"."</td>";
使用上面的代码我什么都没得到,但稍微改动一下:
$isactive = ($row->isactive == "0") ? "Activated":"Deactivated";
$output_string .= "<td>".$isactive."</td>";
我得到了我的结果,所以我的问题是,为什么?
PHP不支持字符串连接中的问号运算符吗?
答案 0 :(得分:2)
它确实支持它,只是在它周围加上一些括号:
$output_string .= "<td>".(($row->isactive == "0") ? "Activated":"Deactivated")."</td>";
答案 1 :(得分:1)
你没有放足够的括号。试试这个:
$output_string .= "<td>".(($row->isactive == "0") ? "Activated":"Deactivated")."</td>";
请注意额外的括号。
如果你刚刚提出:
$output_string .= "<td>".($row->isactive == "0") ? "Activated":"Deactivated"."</td>";
PHP解释器将尝试显示$row->isactive == "0"
,因此为了使它能够执行您想要的操作,您必须将其括在一组额外的括号中。
答案 2 :(得分:1)
不是那样,但在“:”运算符之后
:"Deactivated"."</td>";
应该被视为false的单个语句,如果你想尝试这样的话
$output_string .= "<td>".(($row->isactive == "0") ? "Activated":"Deactivated")."</td>";
答案 3 :(得分:1)
您应该将整个三元操作包装在()
括号
$output_string .= "<td>".($row->isactive == "0" ? "Activated":"Deactivated")."</td>";
那会给你你想要的东西。
我对发生的事情的猜测是,"<td>"
被添加到($row->isactive == "0")
的布尔结果中,您将始终获得"Activated</td>"
作为结果。
答案 4 :(得分:1)
PHP中的连接优先于三元运算符。所以首先执行表达式"<td>".($row->isactive == "0")
,然后表达它的结果(它总是等于true
,因为将非空字符串转换为解释为true
的布尔值)。因此,代码的结果始终是单词Activated
。
答案 5 :(得分:0)
当您在连接之前和之后使用()
时,它将起作用
$output_string .= "<td>".(($row->isactive == "0") ? "Activated":"Deactivated")."</td>";