从数据查询数据后..得到的结果:$result = mysql_query($query);然后是判断 :if(mysql_num_rows($result)>0){
       //........在这,一般都是用 while循环遍历mysql_fetch_xxx($result)的..
有什么办法可以直接使用foreach来遍历呢?
当查询数量比较多的时候,while的效率肯定会比foreach低很多..
}这问题想了半天,都不知道该怎么实现,请高手解惑啊....

解决方案 »

  1.   

    foreach使用范围很窄,这里还是用while比较好
      

  2.   

    无论怎么循环都要mysql_fetch_xxx($result)
      

  3.   

    既然说到效率,应该用for更好吧,mysql_num_rows已知的话
      

  4.   

    仅仅已知mysql_num_rows是没法循环的,还是用which+mysql_fetch_array吧。
      

  5.   

    如果你不信任while,可以使用for,我刚刚也试了下。$result=mysql_query('select * from `table`');
    $num=mysql_num_rows($result);
    for($i=0;$i<=$num;$i++){
    $rs=mysql_fetch_array($result);
            if ( !isset($rs) ) break; //貌似可以不要
    something...
    }
    不过如果你想使用foreach,我暂时还没有想到办法,foreach用于遍历数组的,可惜$result并非数组。
      

  6.   


            $res_array=array();
    for ($i=0;$row=$result->fetch_assoc();$i++)
    {
    $res_array[$i]=$row;
    }
    foreach($res_array as $line)
    {

    }没办法吧,只有先把result中的每一行扔到一个数组里去吧。
      

  7.   


    这是你程序设计的问题,不要归纳于循环的问题另外 用while($a=mysql_fetch_xxx($result)) 和 for($i=0;$i<=$num;$i++){$a=mysql_fetch_xxx($result)}
    其实讨论的就是 php的类型转换 和 php运算 那个更加快,你要多少数据量的级别才体现出这2者之间的运算差别呢?foreach 比 while 快,是因为操作的内容是数组时,foreach直接引用的是php的内置数组索引地址,所以比while快,但是在你这里不适用,当你把所有内容都取出来成为一个数组时,foreach比while提高的时间,已经可以忽略不计了