多条件的PHP

时间:2012-12-25 22:23:38

标签: php switch-statement

我写了一个包含许多条件的简单脚本:

$item =12;
    if($item < 5)
    { 
    //display icon buyer
    }
    elseif ($item < 10)
    {
    //display icon buyer
    }
    elseif ($item < 15)
    {
    //display icon good buyer
    }
    elseif ($item < 20)
    {
    //display icon top buyer
    }
    // etc....

这是一个漫长的多重条件,我知道非常糟糕。

我如何优化代码?

注意。 switch是不可能的,因为我正在使用运算符<>等。

2 个答案:

答案 0 :(得分:10)

比一堆条件更好的是寻找一种允许计算它的模式。

在你的情况下,它看起来像是5步 - 所以适合分裂。


或映射它:

$item = 12;

$icons = [
    10 => 'buyer',
    15 => 'good buyer',
    20 => 'top buyer',
];

foreach ($icons as $value => $icon) {
    if ($item < $value) {
        return $icon;
    }
}
return null;

这允许更灵活的步骤(正如您在相关数据中所拥有的那样)。

答案 1 :(得分:9)

给它一个(demo):

<?php
function icon($item) {
    $icons = array(
        'buyer',
        'buyer',
        'good buyer',
        'top buyer'
    );
    $index = max(0, min(3, $item / 5));
    return $icons[$index];
}

$item = 12;
echo icon($item) . "\n";

$item = 1;
echo icon($item) . "\n";

$item = 100;
echo icon($item) . "\n";

只需添加到$icons数组即可获得更多选项/图标。