<?php
// 根据数字算城市:
$a = [
'深圳' => ['min' => 2, 'max' => 10],
'四川' => ['min' => 8, 'max' => 30],
'湖北' => ['min' => 32, 'max' => 60],
'广东' => ['min' => 50, 'max' => 58],
];
$num = 9;
$data = [];
foreach ($a as $key => $value) {
if ($num >= $value['min'] && $num <= $value['max']) {
$data[] = $key;
}
}
print_r($data);
/*Array
(
[0] => 深圳
[1] => 四川
)*/
// 请问如何优化?或者源数据如何改造才能优化到最佳?
如果数据量非常大,可以考虑类似mysql的索引实现,使用树状索引。
如果数据量比较小,可以提前把num 集合都算出来,使用直接取就ok了。