假设数组有10000个元素,键值为小于1000000的无序的正整数,且不连续,如下$arr=array(1=>'a',20=>'ad',5002=>'ss',190023=>'sd',248=>'ff',76=>'sddd'...);现在要获取数组$arr中键值大于500小于600的元素,不用foreach完全循环一遍的话是否有更高效的算法?

解决方案 »

  1.   

    本帖最后由 PhpNewnew 于 2012-02-07 22:23:10 编辑
      

  2.   

    晕,键值范围啊?我咋看成值范围呢只要for($i=501;$i<600;$i++)
    {
    if(isset($arr[$i]))
    ……
    }即可判断啦
      

  3.   


    你太坏了,我怎么忘记isset了
      

  4.   

    这样是循环100次就够了,而我碰到的这个实际问题键值范围可能会变化,如果键值范围变成10000到100000之间,这个算法的效率就不如foreach一下数组了,最多循环10000次....