作者:我叫33妹 | 来源:互联网 | 2013-05-27 18:17
如果你的数组有特殊性:数组元素大小有序排序,这样的话,你应该用二分查找,因为它快速高效,特地写了一段如下:
-
php
-
/**
-
* 二分法寻找数组下标
-
*@blog http://www.phpddt.com
-
*/
-
function binarySearch($array,$value){
-
//起始位置,你可以作为函数参数
-
$low = 0;
-
$high = count($array)-1;
-
while($low <= $high){
-
$mid = ceil(($low+$high)/2);
-
if($array[$mid] == $value)
-
return $mid;
-
if($array[$mid] < $value){
-
$low = $mid + 1;
-
}
-
if($array[$mid] > $value){
-
$high = $mid - 1;
-
}
-
}
-
return -1;
-
}
-
-
//this is a test
-
$a = array(1,3,5,7,8,12);
-
echo binarySearch($a,8); //4
-
?>
其实PHP中有个很好用的函数叫array_search()
-
php
-
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
-
$key = array_search('green', $array);
-
echo $key; //2
-
?>
很轻松就返回数组下标了!