PHP 数组:遍历数组
遍历数组
开始
PHP 编程中常用 for 、foreach、list 对数组进行遍历。
for 循环遍历数组
例子
$fruits = array("lemon", "orange", "banana", "apple"); for ($i=0; $i < count($fruits); $i++) { echo current($fruits) . " "; echo $fruits[$i] . "<br/>"; } 输出
lemon lemon lemon orange lemon banana lemon apple 从结果可知,这种使用 for 循环遍历数组的形式没有改变数组的内部指针。
foreach 遍历数组
例子
$array = [0, 1, 2]; foreach ($array as &$val){ // 遍历数组 echo $val; } 输出:
012 再给出一个示例:
$array = [0, 1, 2]; foreach ($array as &$val){ var_dump(current($array)); // 遍历数组, 使用current()输出数组指针指向的当前单元的值 } 在 PHP 7 中运行以上程序的输出结果为:
int(0) int(0) int(0) 说明 PHP 7 没有改变数组内部的指针。
而在 PHP 7 之前的版本中则会输出:
int(1) int(2) bool(false) 说明 PHP 7 之前的版本在进行 foreach 循环时会改变数组内部的指针。
在使用 foreach 循环遍历数组的时候,foreach 是对数组的备份进行操作,在循环内部修改数组不会对循环之外访问数组有影响。示例如下:
$arr = array(0, 1, 2); foreach ($arr as $val){ $val = $val*2; // 元素值乘以2 } print_r($arr); 运行程序,输出结果是:
Array ( [0] => 0 [1] => 1 [2] => 2 ) 如果是按照引用循环,那么在循环内部对数组做的修改会影响数组本身。示例如下:
$arr = array(0, 1, 2); foreach ($arr as &$val){ $val = $val*2; // 元素值乘以2 } print_r($arr); 运行以上程序的结果为:
Array ( [0] => 0 [1] => 2 [2] => 4 ) list() 函数
list() 函数用于在一次操作中给一组变量赋值。
语法
list(var1, var2...) 参数
| 参数 | 描述 |
|---|---|
| var1 | 必需。第一个需要赋值的变量。 |
| var2,… | 可选。更多需要赋值的变量。 |
例子
$my_array = array("Dog","Cat","Horse"); list($a, $b, $c) = $my_array; echo "I have several animals, a $a, a $b and a $c."; 输出:
I have several animals, a Dog, a Cat and a Horse. 注意下面这个例子:
$info = array("PHP", "PHP教程", "Laravel"); list($arr[0], $arr[1], $arr[2]) = $info; print_r($arr); 在 PHP 5 中的输出结果是:
Array ( [2] => Laravel [1] => PHP教程 [0] => PHP ) 在 PHP 7中执行以上程序,输出结果为:
Array ( [0] => PHP [1] => PHP教程 [2] => Laravel ) PHP 7 改变了 list() 赋值的顺序,由原来的的倒序赋值改成了正序赋值。
PHP 社区 Wiki
关于 LearnKu