其它循环
上一节内容中,讲解了php中的循环,并且了解了for循环。for循环是php循环中的一种,在本节中继续讲解php循环:While循环、do…while循环、foreach 循环。
While循环
While循环和for循环类似,但是在它的圆括号中只填写循环执行的条件。
语法格式如下:
while (条件)
{
要循环的代码;
}
查看以下代码示例:
<?php
$a=array("1","hello",12,"LiLei",13);
$i=0;
while ($i<count($a))
{
echo $a[$i].'<br/>';
}
?>
以上代码示例中,定义了一个a数组变量,值为 "1","hello",12,"LiLei",13
,随后定义了一个i变量,值为0。
接下来使用了while循环,在条件中,添加了 $i<count($a)
,用来判断当前i变量每循环一次是否已经大于了数组长度。随后每次循环都输出当前a数组的第i位置值。
查看完以上代码,我们发现,$i变量并没有进行增减,一直都是初始化时的值,为0。此时循环将会一直执行,成为死循环。要避免这种情况我们可以使$i 变量每循环一次就增加1,代码可以写为如下:
<?php
$a=array("1","hello",12,"LiLei",13);
$i=0;
while ($i<count($a))
{
echo $a[$i].'<br/>';
$i++;
}
?>
在循环的代码中,执行了$i++每次循环i变量加一。这样i值会有变化,在有限次数内会跳出循环。
最终结果如下:
do…while 循环
do…while循环是类型while的一种循环方式,查看以下do…while循环的语法:
do
{
要执行的代码;
}
while (条件);
do…while 循环与while循环的不同是,do…while循环条件放在后面,while循环是在前面。这种方式方式有什么不同呢?请看以下示例:
<?php
$i=5;
do
{
echo 'hello';
$i++;
}while ($i<5);
?>
在以上的do…while循环中,while循环后的条件是 $i<5
,但是变量i的值初始化定义的时候为5,条件是不成立的,那么循环是否会执行?查看以下结果:
循环指定了一次,输出了一个hello,随后就跳出循环。
do…while循环和while 循环的不同点在于,do…while循环不管条件成立与否都会执行一次循环,而while循环则会先判断条件随后再进行循环。两者先后顺序不一样。并且do…while循环需要在条件后打上分号,表示结束。
foreach 循环
foreach循环用于遍历数组,每次循环,数组的元素值就会赋值给一个变量。语法如下:
foreach (数组 as 指向的变量)
{
循环的代码;
}
示例如下:
<?php
$a=array('1','aaaa',23,'daw');
foreach($a as $val){
echo $val.'<br/>';
}
?>
以上代码中,定义了一个数组变量a,接下来使用foreach循环进行数组的遍历。
在foreach的圆括号中,代码为 $a as $val
,释义为变量val指向数组a变量的元素,每次都指向下一个。例如第一次循环指向为’1’,第二次循环指向为’aaaa’,第三次以此类推。结果如下:
foreach循环变量键值对
foreach循环对键值对的遍历也是非常友好的。查看如下示例:
<?php
$a=array('name'=>'Xiaoming','age'=>23);
foreach($a as $key=>$val){
echo $key.'=>'.$val.'<br/>';
}
?>
以上示例中,定义了一个键值对数组a,name是键,Xiaoming是值,其它值也是键值对。
使用foreach进行对a数组的遍历,在圆括号中 $a as $key=>$val
,首先是需要遍历的数组 a,使用关键字as,之后是$key=>$val
,表示键值对的一种关系,$key 是键 $val 是指,这两个变量名可以随意更改,并不是一定需要跟我所写的一致。
结果如下:
在键值对的数组中,也可以不设置键值对关系。例如示例:
<?php
$a=array('name'=>'Xiaoming','age'=>23,12,'ddd','sex'=>'nan',444);
foreach($a as $key=>$val){
echo $key.'=>'.$val.'<br/>';
}
?>
以上数组中并不完全是设置的键值对。运行结果如下:
自定义键值对后,如果出现未定义键的数组元素,则会从0开始默认分配。