array(
  array(
  "id"=>1,
  "cid"=>1,
  "name"=>"n1"
  ),
  array(
  "id"=>2,
  "cid"=>1,
  "name"=>"n2"
  ),
  array(
  "id"=>3,
  "cid"=>2,
  "name"=>"n3"
  ),
  array(
  "id"=>4,
  "cid"=>2,
  "name"=>"n4"
  )
);根据条件cid=2时
则取出id3和id4的内容有不遍历的方法吗?或者效率高点的
因为整个数组可能会有N多元素

解决方案 »

  1.   


    function f($var)
    {
        return $var['cid'] == 2;
    }
    $r=array_filter($arr,'f');print_r($r);
      

  2.   

    应该得用到循环吧,就算是数组函数它里面也得用到循环,另外数组里面的id可以用数组索引来替代for($i=0;$array[$i]['cid']!='';$i++)
      if($array[$i]['cid']==$mix)
             break;
    if($array[$i]['cid']!=''){
    print_r($array[$i+1]);
    print_r($array[$i+2]);
    }
      

  3.   

    循环可以优化一下每次从count($current_array)/2开始搜索
      

  4.   

    唉唉唉唉唉  以前acm的时候用到过的折半查找,楼主如果想快速可以用这个算法,
      

  5.   

    估计不循环是不太可能的,建议使用一下PHP内置的数组函数来简化一些判断和操作,例如array_filter,可能会提升性能