多条件的PHP

Kat*_*ate 5 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....
Run Code Online (Sandbox Code Playgroud)

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

我如何优化代码?

注意. switch是不可能的,因为我使用的是运营商<>

hak*_*kre 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;
Run Code Online (Sandbox Code Playgroud)

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

  • 有趣的方法与foreach和它很容易进行未来维护. (2认同)

uın*_*ɐɥs 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";
Run Code Online (Sandbox Code Playgroud)

只需添加到$icons阵列即可获得更多选项/图标.