干草,我有if
陈述。我怎么能让它尽可能短?
if ( $a < 0 ){
if( $a > -2 ){
echo "standard";
}elseif( $a <= -2 && $a > -4 ){
echo "thin";
}elseif( $a <= -4 ){
echo "super thin";
}
}else{
if( $a < 2 ){
echo "standard";
}
if( $a > 2.01 && $a <= 4){
echo "thin";
}
if( $a > 4.01 && $a <= 8.00){
echo "super thin";
}
}
编辑:基本上$a
将是任意数字(正数或负数),我们会像这样匹配。
如果值为
任何知道可能用于此目的的人的额外分数:)
答案 0 :(得分:10)
您可以使用绝对值缩短它:
$b = abs($a);
if ($b <= 2) {
echo "standard";
} else if ($b <= 4) {
echo "thin";
} else if ($b <= 8) {
echo "super thin";
}
答案 1 :(得分:6)
这个怎么样:
$a = abs($a);
if($a<=2) echo "standard";
elseif($a<=4) echo "thin";
elseif($a<=8) echo "super thin";
答案 2 :(得分:4)
这很简单:
<?php
$b = abs($a);
$ranges = array(
'standard' => 2,
'thin' => 4,
'super thin' => 8
);
foreach($ranges as $range=>$max) {
$size = $range;
if($b > $max) continue;
break;
}
?>
答案 3 :(得分:1)
或者你可以保持实际范围,允许范围结束不同(而不仅仅是绝对值),并允许容易包含其他范围:
$ranges = array(
'standard' => array(-2, 2),
'thin' => array(-4, 4),
'super thin' => array(null,8),
);
foreach($ranges as $key => $range) {
if((is_null($range[0]) || $a => $range[0]) && (is_null($range[1]) || $a <= $range[1])) {
echo $key;
break;
}
}
列表中的第一个匹配范围是符合条件的范围。
答案 4 :(得分:0)
if ( $a < 0 )
{
if( $a > -2 ) echo "standard";
elseif($a > -4) echo "thin";
else echo "super thin";
}
else
{
if( $a < 2 ) echo "standard";
elseif( $a > 2.01 && $a <= 4) echo "thin";
elseif( $a > 4.01 && $a <= 8.00) echo "super thin";
}
答案 5 :(得分:-6)
使用switch
而不是else if
总是更好!它使代码更清晰,可扩展。
switch($a) {
case (-2 < $a):
case ($a < 2):
$r = 'Standard';
break;
case ( 2.25 > $a):
case (-2.25 < $a):
case ($a < 4):
case ($a > -4):
$r = 'Thin';
break;
case ( 4.25 > $a):
case (-4.25 < $a):
case ($a < 8):
case ($a > -8):
$r = 'Super Thin';
break;
default:
$r = 'Out of range';
}
echo $r;
案例表达可以是任何 表达式,评估为简单 type,即整数或 浮点数和字符串。 这里不能使用数组或对象 除非他们被解除引用 简单的类型。
取自http://us3.php.net/manual/en/control-structures.switch.php
的文件