我使用了很多in_array
函数,这似乎让我的加载时间陷入困境。我在in_array
php documentation中找到了以下代码。作者声明“这个函数比in_array()快五倍。它使用二进制搜索,应该可以用作直接替换。”
function fast_in_array($elem, $array)
{
$top = sizeof($array) -1;
$bot = 0;
while($top >= $bot)
{
$p = floor(($top + $bot) / 2);
if ($array[$p] < $elem) $bot = $p + 1;
elseif ($array[$p] > $elem) $top = $p - 1;
else return TRUE;
}
return FALSE;
}
然而这个功能有效,但只有一半的时间,有时它不会输出它应该输出的所有内容,例如,如果我有一个苹果,橙子和柠檬的数组,并且匹配苹果和橙子它只会打印橘子或奇怪的东西。有人可以向我解释这个脚本究竟是做什么的,以及为什么它不能替代in_array
。
答案 0 :(得分:7)
执行二进制搜索,假设数组按排序总顺序排列。如果数组未排序,则会失败。
答案 1 :(得分:5)
此功能执行二分查找。它仅在数组已排序时有效。
P.S。声称它的工作速度“快五倍”非常有趣。