首先要说的是,其实我对foreach循环的用法并非很精通,说详解,其实也只是我本身的理解,但愿对你能有点帮助 。
先来看一下foreach的语法:
foreach ($array as $key=>$value)
{
……
}
为了便于理解,咱们假定这里的$array是一个一维的相关数组,$key是数组的索引,$value是这个索引的值,它们的名字能够随意,之因此叫$key和$value是为了便于理解。为了能让你更好的理解foreach的工做过程,咱们来建立一个数组:
$array = array('first'=>'ibm','second','hp');
如今咱们模拟PHP服务用foreach对$array进行遍历:
foreach ($array as $key=>$value)
{
echo $key.'=>'$value;
}
第一次循环,$key = 'first',$value = 'ibm',这个时候,实际foreach对$array执行了一个咱们看不见的操做:
next($array),将数组指针向前(这里的“向前”跟PHP手册相同,不是咱们一般所理解的“向前”)移一。而后echo语句输出"
first=>ibm"。
第二次循环,首先会判断数组$array的当前指针是否已经到了数组的末尾,若是是,结束循环,不然进入第二次循环。固然这样的判断在进入第一次循环的时候也会有,若是$array是一个空数组,那么就会直接执行循环下面的语句。此时,$key = 'second','value' = 'hp',
next($array)后,输出"
second=>hp"。而后进行判断,数组指针已经到达末尾,执行下面的语句。
到这里你应该对foreach循环有所了解了吧?还有一点须要的是,foreach每次只是传递一个值,而不是真的对数组元素进行操做。具体到上面的例子,若是你想在每一个数组元素的后面加上 'company' 这个字符串,那么
$value .= 'company'这样的操做是不行的,它并不会改变数组元素的值,这个时候你应该这样用:
$array[$key] .= 'company';
太长了,二维或多维数组的用法放在下一篇。