我试图采用简单的数字范围(在这个项目的例子中,我为每个用户使用不同的货币增量。顺便说一句,伪造货币…),并将它们分组到可以公开显示的类中,而不是绝对数。
以下是一个关于编写此函数的长方法的粗略代码示例:
<?
$money=500001;
if($money > 0 AND $money < 5000) {
$class = 'Poor';
} elseif ($money >= 5000 AND $money < 25000) {
$class = 'Lower Class';
} elseif ($money >= 25000 AND $money < 100000) {
$class = 'Middle Class';
} elseif ($money >= 100000) {
$class = 'Upper Class';
}
echo $class;
exit();
?>
现在,我知道这个函数会起作用,但它的编写方式似乎非常糟糕,因为如果添加更多的$class,它就会变得太长。
现在我的问题是:有没有更短的方法来写这个?可能使用range()和/或值数组?
我会选择这样的东西:
function getClass($sal){
$classes = array(5000=>"poor", 25000=>"Lower Class", 100000=>"Middle Class");
foreach ($classes as $key => $value) {
if($sal < $key){
return $value;
}
}
return "Upper Class";
}
$salary = 90000;
$sal_class = getClass($salary);
echo "salary class = $sal_class'n";
输出:
sal=中级
与上面的答案有点相似,但更好。我将建议使用OO方法。
Class Foo {
protected $class = array(
array("poor", 0, 5000),
array("medium", 5000, 25000)
);
function get_class($amount) {
foreach ($this -> class as $key => $value) {
if($amount > $value[1] && $amount < $value[2]) {
return $value[0];
}
}
return null;
}
function add_class(array $arr) {
$this -> class[] = $arr;
}
}
用法:
$obj = new Foo();
$obj -> get_class(6000); //Outputs: medium
$obj -> add_class(array("rich", 25000, 50000)); //Add a new class
$obj -> get_class(35000); //Outputs: rich