php速记问题
我有这个:php速记问题,php,shorthand,Php,Shorthand,我有这个: $color = $status == 1 || $status == 2 ? 'read' : 'unread' || $status == 3 ? 'delete' : 'unread'; 然而,这是错误的。如果$status不是3,它仍然返回“delete” 怎么了?我是否应该使用else if而不是速记 谢谢。1)| |不是100%等于或像&¬ 100%等于和 2) 使用括号 注意:是的,使用“if..else”-它将提高代码的可读性。1)|不100%等于或不100
$color = $status == 1 || $status == 2 ? 'read' : 'unread' || $status == 3 ? 'delete' : 'unread';
然而,这是错误的。如果$status
不是3,它仍然返回“delete”
怎么了?我是否应该使用else if
而不是速记
谢谢。1)| |不是100%等于或像&¬ 100%等于和
2) 使用括号 注意:是的,使用“if..else”-它将提高代码的可读性。1)|不100%等于或不100%等于和
2) 使用括号
附言:是的,使用“if..else”-这将提高代码的可读性。我会说不要这样做,因为速记-速记会更容易阅读,无论是在你忘记正在做什么的三天内,还是当其他人出现时。我会说不要这样做,因为速记-速记会更容易阅读,三天之内,当你忘记自己在做什么时,或者当其他人出现时,这两种情况都适用于你。你想从你的结果中得到什么?我假设你想要:
if/else
或开关
:
switch ($status) {
case 1: $color = 'read'; break;
case 3: $color = 'delete'; break;
default: $color = 'unread';
}
一般来说,我不使用“?:”形式,除非我能获得巨大的进步;通常,可读性越强越好。你想要得到什么样的结果?我假设你想要:
if/else
或开关
:
switch ($status) {
case 1: $color = 'read'; break;
case 3: $color = 'delete'; break;
default: $color = 'unread';
}
一般来说,我不使用“?:”形式,除非我能获得巨大的进步;通常情况下,可读性更好。用括号固定,谢谢Chvanikoff
$color = ($status == 1 || $status == 2) ? 'read' : ('unread' || $status == 3 ? 'delete' : '');
修正了括号,谢谢Chvanikoff
$color = ($status == 1 || $status == 2) ? 'read' : ('unread' || $status == 3 ? 'delete' : '');
三元运算符有一个古怪的绑定 你可以用地图来代替:
$map = array(0=>"unread", 1=>"unread", 2=>"read", 3=>"delete");
$color = $map[ min(3,$status) ]; // min is actually the max value here
三元运算符有一个古怪的绑定 你可以用地图来代替:
$map = array(0=>"unread", 1=>"unread", 2=>"read", 3=>"delete");
$color = $map[ min(3,$status) ]; // min is actually the max value here
实际上,我还从未在PHP中使用过开关。我将收回我对我的答案所说的话
$color=$status==1 | |$status==2?“读取“:(“未读”|“$status==3?”删除“:“未读”)代码>并移动到一个开关中,因为您是对的。实际上我还从未在PHP中使用过开关。我将收回我对我的答案所说的话$color=$status==1 | |$status==2?“读取“:(“未读”|“$status==3?”删除“:“未读”)
并移动到交换机中,因为您的右侧。确定:&&and | |的优先级高于and和OR。当然:&&and | |的优先级高于and和OR。你的数组$map:如果“未读”只是单独存在,这意味着什么?@Kyle:啊,对不起。第一个条目占用[0]
索引。这是另一个退路。如果您确定$status不能为零,则可以将其忽略。在其他情况下,最好记下所有潜在值。我会省去所有的123=>
说明符,让它成为一个列表。哦,准确地列出它们更具可读性如果$status肯定介于0和3之间,那么您也可以省去min()
hack,使其比switch语句更简洁。您的数组$map:如果“未读”只是单独存在,这意味着什么?@Kyle:啊,对不起。第一个条目占用[0]
索引。这是另一个退路。如果您确定$status不能为零,则可以将其忽略。在其他情况下,最好记下所有潜在值。我会省去所有的123=>
说明符,让它成为一个列表。哦,准确地列出它们更具可读性如果$status肯定介于0和3之间,那么您还可以省略min()
hack,使其比switch语句更简洁。