(是的,我知道这个问题已经过时了,但我觉得要在其中添加我自己的两分钱。)虽然有很多方法可以给猫剥皮。我觉得要发布一些我在运行多次测试时所做的观察。您也可以应用相同的测试和/或在http://3v4l.org/(在线 PHP 和 HHVM Shell)上应用它们。要进行测试,您应该运行多个以正确衡量差异。在测试中,我接受了 WebChemist 的响应并将其反转。为什么?有时只是好玩。然而,实际结果表明,三元整体有微小的改进。对两者都使用各种输入值。
$price_check = '...';
$filter = (
( $price_check > '500') ? '501' :
(($price_check > '200') ? '200-500' :
(($price_check > '100') ? '100-200' :
(($price_check > '50') ? '50-100' :
(($price_check > '20') ? '20-50' :
(($price_check > '0') ? '0-20' :
'0'
))))));
然后虽然下一个示例可以更好地改进,但它只是一个示例。所以不要将其判断为生产水平。这只是三元和 if/else 之间的一个想法。总体而言,if/else 的性能优于应用的任何三元。主要是做这个测试是因为我总是两端都读,三进制更容易读,或者if/else更容易读。我说两者都可以如以下示例中提供的那样。最后,我真的相信您使用其中一个或另一个取决于具体情况。就这些数据而言,过滤价格之间存在关联。if/else 最终在速度上胜过了三元。它也很容易阅读(我认为)。最后,它都是微型爵士乐,所以它真的没那么重要。那些觉得不同意的人可以在自己的环境中运行自己的测试,或者访问提供的网站。有时比在互联网上相信的话更好。我在自己的环境以及那个网站上进行了许多测试,以得出一些基本结论。我仍然喜欢阅读三元和 if/else 参数。网上流传着一些不错的读物。此外,如果在示例中掉线真的会困扰您。过去,它不会影响性能,甚至总体而言,使用此代码会更快。您可以在转义中编码,或完全重组它。
$price_check = '...';
$filter='501';
if($price_check > '500' || $filter='200-500')
if($price_check > '200' || $filter='100-200')
if($price_check > '100' || $filter='50-100' )
if($price_check > '50' || $filter='20-50' )
if($price_check > '20' || $filter='0-20' )
if($price_check <= '0') $filter=0;
我想补充一点,如果数据大小适中,Jon 对数组的建议可能是最好的。三元和 if/else 可以处理大多数基本的嵌套。中度推荐列表。任何更多的东西都应该被推送到数据库并被访问。此外,我稍微修正了 Jon 的代码。(如果您将三元和 if/else 嵌套在数据库上,那么您就有问题了。)
$data = '20.00';
$range = '';
$arr = [
'0',
'20' => '0-20',
'50' => '20-50',
'100' => '50-100',
'200' => '100-200',
'500' => '200-500'
];
foreach ($arr as $floor => $value) {
$range = $value;
if ($floor >= $data)break;
} echo $range;