日期:2011-10-21  浏览次数:20417 次

  while是php里面用的最多的一个函数,但是观察了很久,但是很多人用习惯了,并不知道里面是怎么回事,只是习惯性打上去;

  先测一下一秒中,while可以运行多少次循环;

  $time1 = microtime(true);

  $i =0;

  while(1)

  {

  $i++;

  if(microtime(true)- $time1 >1)

  {

  echo $i;

  exit();

  }

  }

  ?>

  运行结果

  389443;

  while是当whle括号里面的条件成立的话,就执行,这是绝对正确的

  所以while(1)就是无限循环;

  实例1:

  $sql = "select * from table";

  $result = mysql_query($sql);

  while($arr = mysql_fetch_assoc($result))

  {

  }

  这一个理解是当while括号里面$arr = mysql_fetch_assoc($result);成立的情况下,就会一直往下运行;

  $arr = mysql_fetch_assoc($result);

  当执行这个查询的话,第一次,指针就对准第一行,如果第二次查询的时候,他就会对准第二行,一直找到没有结果,返回false就不会执行了

  错误写法:

  $sql = "select * from table";

  $result = mysql_query($sql);

  $arr = mysql_fetch_assoc($result));

  while($arr = mysql_fetch_assoc($result))

  {

  }

  这样执行过来的结果就会少了一行;

  实例2:两分算法

  while($ip1num>$ipNum $ip2num<$ipNum)

  {

  }

  这是discuz里面取得ip地址对应的真实地址的function

  附件里面有这个function的文件包

  简单的拆成

  while($a>1 $b <1)

  {

  }

  再拆

  while($a >1)

  {

  }

  while($b<1)

  {

  }

  如果$a 是先有值的情况下,

  如果$a =1;

  那样就执行不下去,条件不成立

  或者$a =2;

  这样就无限循环了;

  重点

  如果$a没有先附值

  刚开始我一直以为是错误,但是实际上他不会有错误,

  这是php不同的地方

  简单通过一个程序测试一下

  $i =0;

  while($a<1)

  {

  $i++;

  if(microtime(true)- $time1 >1)

  {

  echo $i;

  $a =1;

  }

  }

  ?>