PHP的do-while循环里面的条件语句不仅含有判断功能还有执行的功能。
普通的do-while循环代码如下:
$a=0;do{echo "today is saturday!<br/>";$a++;} while ($a<5);
上面的代码会输出5行‘today is saturday!’,这里的条件判断语句‘$a<5’仅仅是判断的作用。
再看下面的代码:
$shuzu = array(0 => 'gou',1 => 'mao',2 => 'zhu',3 => 'yu');do{echo current($shuzu);echo "<br/>";} while ( next($shuzu) );
上面代码中do-while循环中的条件判断语句‘next($shuzu)’,不仅会布尔判断,而且会执行next()这个函数,也就是把数组的指针移动一位。
这样输出内容为全部数组内容:
如果do{}内容区仍然使用current($zhuzu),但是条件判断语句不使用next()函数,而只是使用$b<5之类,则不会打印出完整数组,只是打印出数组的第一个指针对应的值,代码如下:
$shuzu = array(0 => 'gou',1 => 'mao',2 => 'zhu',3 => 'yu');$b = 0;do{echo current($shuzu);echo "<br/>";$b++;} while ( $b<5 );
上述代码打印的效果依然是5行‘gou’。
事实证明,如果do-while()的条件语句使用next()函数,则此next()函数不仅仅会判断,还会执行,会把数组指针移动一位。
测试代码截图如下: