PHP问号运算符和字符串连接

时间:2012-09-27 04:56:58

标签: php string codeigniter

我仍然是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不支持字符串连接中的问号运算符吗?

6 个答案:

答案 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>";