while(expr)
statement
while语句告诉PHP只要while表达式的值为TRUE就重复执行嵌套中的循环语句。表达式的值在每次开始循环时检查,所以即使这个值在循环语句中改变了,语句也不会停止执行,直到本次循环结束。如果表达式一开始是false,循环语句一次都会执行。
do-while
do-while循环和while循环非常相似,区别在于表达式的值是每次循环结束时检查而不是开始时。和一般的while循环主要的区别是do-while的循环语句保证会执行一次。
for
for循环是php中最复杂的循环结构,语法是:
for(expr1;expr2;expr3)
statement
第一个表达式(expr1)在循环开始前无条件求值(并执行)一次
expr2在每次循环开始前求值。如果值为TRUE,则继续循环,执行嵌套的循环语句,如果为FALSE则终止循环。
expr3在每次循环之后被求值(并执行)
每个表达式都可以为空,或者逗号分隔的多个表达式。表达式expr2中,所有用逗号分隔的表达式都会去计算,但是只取最后一个结果。expr2为空意味着将无限循环下去。这可能不像想象中那样没有用,因为经常会希望用到条件的break语句结束循环而不是用for的表达式真值判断。
foreach
foreach语法结构提供了遍历数组的简单方式。foreach仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。
foreach(array_expression as $value)
statement
foreach (array_expression as $key=>$value)
statement
第一种格式遍历给定的array_expression数组。每次循环中,当前单元的值被赋值给$value并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)
第二种格式做同样的事,只除了当前单元的键名也会每次循环中被赋值个变量$key。
注意如果在循环内部修改值可能导致意外错误,因为foreach依赖内部数组指针,变量赋值
所以如果要改变值,就要在$value前加上&,此方法将引用赋值而不是拷贝一个值。因为你是引用value,最后一个值会被保留,建议用unset()来将其销毁。