PHP查找表

时间:2011-09-08 14:09:27

标签: php

我的手中有一张图表,如下所示。这些价值很可能永远不会改变。

+----------------------+
|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语句。但不确定这是否是最佳解决方案。

1 个答案:

答案 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|
| ...   | ...  |
+--------------+