function get_status($data) {
return ($data->cm_status == 'Y') ? 'Active' :
($data->cm_status == 'N') ? 'Inactive' : '-';
}
如果Active
为$data->cm_status
Y
如果Inactive
为$data->cm_status
N
如果-
是其他任何内容,我应该$data->cm_status
但实际上我得到Inactive
我在做什么错误?
引用您的回答
答案 0 :(得分:3)
您需要将内部三元运算符包含在括号中,以便正确生成结果,例如
function get_status($data) {
return $data->cm_status == 'Y' ? 'Active' :
($data->cm_status == 'N' ? 'Inactive' : '-');
}
更可读的方法可能是使用switch
,而使用嵌套的三元运算符很容易混淆并导致比解决更多的混乱。 switch
看起来像这样
function get_status($data) {
switch ($data->cm_status) {
case "Y":
return 'Active';
case "N":
return 'Inactive';
default:
return '-';
}
}
这也假设输入总是大写的,您可以添加额外的代码进行比较,无论其大写还是小写。
答案 1 :(得分:0)
在嵌套三元运算符的情况下,复合运算符应位于几个括号内。所以试试这个;
function get_status($data) {
return ($data->cm_status == 'Y') ? 'Active' :(($data->cm_status == 'N') ? 'Inactive' : '-')
}
注意第二个三元条件运算符中的“()”。
答案 2 :(得分:0)
使用此:
function get_status($data) {
return ($data->cm_status == 'Y') ? 'Active' :
(($data->cm_status == 'N') ? 'Inactive' : '-');
}