5

我写了一个有很多条件的简单脚本:

$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不可能,因为我正在使用运算符<and >等。

4

2 回答 2

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;

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

于 2012-12-25T22:26:53.380 回答
9

试一试(演示):

<?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数组中即可获得更多选项/图标。

于 2012-12-25T22:33:04.147 回答