我的手中有一张图表,如下所示。这些价值很可能永远不会改变。
+----------------------+
|Rating | >= | <= |
+----------------------+
| 100 | 0.0 | 0.112 |
| 99 | 0.113| 0.156 |
| 98 | 0.157| 0.201 |
| 97 | 0.202| 0.309 |
| ... | ... | ... |
+----------------------+
在PHP中实现像get_rating(0.300)
这样的函数的最佳方法是什么?
当然我可以创建一个长if / else链或switch语句。但不确定这是否是最佳解决方案。
答案 0 :(得分:2)
您可以创建范围下边缘的数组:
$ratings = array( 100 => 0, 99 => 0.113, 98 => 0.157, 97 => 0.202 ...);
然后从数组中找到高于输入值加1的最小值。然后返回该值的键。
但......我个人认为,如果你已经使用数据库,那么SQL BETWEEN
语句将是最好的选择。
使用数据库,您也可以仅存储范围的下边缘,等级等级。将来更改值会更容易,然后您 类似 :
SELECT MAX(rating) FROM chart WHERE $val < lower
然后数据库查询只需要使用2列:
+--------------+
|Rating | lower|
+--------------+
| 100 | 0.0 |
| 99 | 0.113|
| 98 | 0.157|
| 97 | 0.202|
| ... | ... |
+--------------+