这三元是否有效?

Dar*_*ney 0 php if-statement ternary-operator

我正在使用三元if语句,因为我不能使用switch进行以下操作,但是,有更好的方法吗?我最近读到这些可能是资源匮乏的?(这可以在页面中多次调用)

$filter= (
    ($price_check > '0' && $price_check < '20.01') ? '020' : 
    (($price_check > '20.00' && $price_check < '50.01') ? '2050' :
    (($price_check > '50.00' && $price_check < '100.01') ? '50100' :
    (($price_check > '100.00' && $price_check < '200.01') ? '100200' :
    (($price_check > '200.00' && $price_check < '500.01') ? '200500' :
    (($price_check > '500.00') ? '501' : '0'
))))));
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 8

谈论三元运算符的"效率"是一个红色的鲱鱼.它的速度并不重要,如果将代码放在计算绑定应用程序的内部循环内(这几乎肯定不是),它可能仍然无关紧要.

应该问的是"六个月后,当我需要做出改变时,我是否想在我面前找到这个?".

应始终将可维护性作为经验.如果你不知道这个代码确实是一个瓶颈的事实,你应该尽可能方便地编写它.

因此,您可能会考虑性能较差但可维护性较高的替代样式,例如:

$data = array(
    '0'      => '020',
    '20.00'  => '2050',
    '50.00'  => '50100',
    // ...
);

$price_check = '...';
$filter = '0'; // default value
foreach ($data as $floor => $value) {
    if ($floor > $price_check) break;
    $filter = $value;
}
Run Code Online (Sandbox Code Playgroud)