有时候我们在根据不同条件对一个变量进行赋值时,如果只有两种情况,自然而然地就会想到使用三元表达式:
$a = $v > 5 ? 1 : 0;
但是如果分成三种情况呢?即当$v==5的时候给$a赋另外的值,那么我们可能就要使用if、elseif、else了:
if($v == 5)
$a = 0;
elseif($v > 5)
$a = 1;
else
$a = -1;
这时其实也可以使用三元表达式:
$a = $v > 5 ? 1 : ($v == 5 ? 0 : -1);
理论上,这样的结构是可以不断嵌套下去的:
$a = 条件1 ? 值1 : (条件2 ? 值2 : (条件3 ? 值3 : (条件4 ? 值4 : 值5)));
它与这样的结构的效果是一样的:
if(条件1){
$a = 值1;
}elseif(条件2){
$a = 值2;
}elseif(条件3){
$a = 值3;
}elseif(条件4){
$a = 值4;
}else{
$a = 值5;
}
当然,实际在编写代码的时候为使结构清晰是不建议使用这种三元表达式嵌套的,并且代码的执行效率也会降低,因此还是使用常规的分支结构。
在此写出,仅供大家消遣,新人千万不要用这样的嵌套来代替复杂的分支结构哦,要不然我就要被骂死了……
请各位高人勿喷~~