for循环遍历
<?php
/**
* 1.for循环遍历-只能针对索引数组
*/
$for_arr = [1, 2, 3];
$for_arr_len = count($for_arr);
for($i = 0; $i < $for_arr_len; $i++) {
echo $for_arr[$i] . PHP_EOL;
}
//关联数组
$for_arr2 = ['a' => 1, 'b' => 2, 'c' => 3];
$key_arr = array_keys($for_arr2);
for($i = 0; $i < $for_arr_len; $i++) {
echo 'key=' . $key_arr[$i] . ', value=' . $for_arr2[$key_arr[$i]] . PHP_EOL;
}foreach遍历
注意:foreach遍历即可用于索引数组也可用于关联数组
/**
* 2.foreach循环遍历-既能针对索引数组又能针对关联数组
*/
//索引数组
$foreach_arr1 = [1, 2, 3];
foreach($foreach_arr1 as $k1 => $v1) {
echo 'key=' . $k1 . ', value=' . $v1 . PHP_EOL;
}
//关联数组
$foreach_arr2 = ['a' => 1, 'b' => 2, 'c' => 3];
foreach($foreach_arr2 as $k2 => $v2) {
echo 'key=' . $k2 . ', value=' . $v2 . PHP_EOL;
}each 遍历(PHP 7.2.0 起废弃)
注意:each 结合while、list遍历即可用于索引数组也可用于关联数组
/**
* 3.each结合while、list循环遍历--既能针对索引数组又能针对关联数组
*/
//索引数组
$each_arr1 = [1, 2, 3];
while(list($k1, $v1) = each($each_arr1)) {
echo 'key=' . $k1 . ', value=' . $v1 . PHP_EOL;
}
//关联数组
$each_arr2 = ['a' => 1, 'b' => 2, 'c' => 3];
while(list($k2, $v2) = each($each_arr2)) {
echo 'key=' . $k2 . ', value=' . $v2 . PHP_EOL;
}foreach遍历和each遍历的区别
each()函数的作用是输出当前指针指向的数组元素并且指针在向前移动一位,当前指针已经指向数组元素的末尾的时候,each会返回false。这个时候,如果后面还有代码是通过each循环输出,则返回false,这个时候需要重置指针,让指针指向数组元素的第一个元素。
foreach 每次都会自己重置数组指针,把指针始终指向数组的第一个元素。
两个each
$each_arr = [1, 2, 3];
while(list($k, $v) = each($each_arr)) { //循环完毕后,数组指针回指向末尾的元素
var_dump('key=' . $k . ', value=' . $v) . PHP_EOL;
}
while(list($k, $v) = each($each_arr)) { //由于指针已经指向数组的末位尾元素,each返回false,不进入循环。
var_dump('key=' . $k . ', value=' . $v) . PHP_EOL;
}两个each和reset
$each_arr = [1, 2, 3];
while(list($k, $v) = each($each_arr)) { //循环完毕后,数组指针会指向末尾的元素
var_dump('key=' . $k . ', value=' . $v) . PHP_EOL;
}
reset($each_arr); // 重置指针即指针指向数组第一个元素
while(list($k, $v) = each($each_arr)) {
var_dump('key=' . $k . ', value=' . $v) . PHP_EOL;
}
评论区