五种遍历方法:1、用“for($i=0;$i<数组长度;$i++)”;2、用“foreach(数组 as="">$v)”;3、用“while(list($k,$v)=each(数组))”;4、用“array_map(回调函数,数组)”等。

本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑

php中遍历数组的五种方法

方法1:使用for循环语句

for循环会将控制循环次数的变量预先定义在for语句中,因此for循环语句能够按照已知的循环次数进行循环操作,适用于明确知道脚本需要运行的次数的情况。

for 循环的语法格式如下:

for (初始化语句; 循环条件; 变量更新--自增或自减) {
    语句块;  
}

下面通过代码示例来具体看看:

<?php
header("Content-type:text/html;charset=utf-8");
$array= array(2,"数学","梨子",3.14,"榴莲",12);
for ($i=0; $i < count($array); $i++) { 
    echo $array[$i] . "<br/>";
} 
?>

输出结果:

1.png

方法2:使用foreach循环语句

foreach是专门为遍历数组而设计的语句,是遍历数组时常用的方法,在遍历数组方面提供了很大的便利;PHP5后还可以遍历对象(foreach仅能够应用于数组和对象)。

foreach语句遍历数组与数组下标无关,且可以用于不连续的索引数组和以字符串为下标的关联数组。

下面通过代码示例来具体看看:

<?php
header("Content-type:text/html;charset=utf-8");
$array= array("香蕉","苹果","梨子","橙子","橘子","榴莲");
foreach ($array as $val){
    echo "值是:" . $val ;
    echo "<br/>";
}
echo "<br/>";
foreach ($array as $key => $value) { 
    echo "键名为:".$key.",键值为:".$value . "<br/>";
} 
?>

输出结果:

2.png

遍历给定的 $array 数组,在每次循环中会将当前数组的值赋给 $value,键名赋给 $key。

方法3:利用while循环+each()+list()

each() 函数返回数组中当前的键值并将数组指针向前移动。在执行 each() 之后,数组指针将停留在数组中的下一个元素或者当碰到数组结尾时停留在最后一个元素。

而list() 函数用于在一次操作中给一组变量赋值。

while循环+each() 函数+ list() 函数可以遍历数组,下面通过代码示例来看看:

<?php
header("Content-type:text/html;charset=utf-8");
$array= array("香蕉","苹果","梨子","橙子","橘子","榴莲");
while( list($key, $val) = each($array) ) {
    echo "$key => $val<br>";
}
?>

输出结果:

3.png

方法4:使用array_map()函数

使用匿名函数的方式,处理数组里的每个元素。遍历完成后返回一个新的数组

<?php
$arr = ['a', 'b', 'c'];
var_dump($arr);
$arr = array_map(function ($item) {
    return $item . '_i';
}, $arr);
var_dump($arr);
?>

4.png

你可以同时处理多个数组

<?php
header('content-type:text/html;charset=utf-8');   
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['你', '好', '吗', '原', '罪'];
// $arr_n = [...];
$arr = array_map(function ($item_1, $item_2) {
    return $item_1 . '_' . $item_2 . '_i';
}, $arr_1, $arr_2);

var_dump($arr); // ['a_你_i', 'b_好_i', 'c_吗_i', '_原_i', '_罪_i']
?>

5.png

方法5:使用array_walk()函数

以引用传递的形式遍历你的数组,没有返回值,而且只能处理一个数组。

<?php
$arr = ['a', 'b', 'c'];
array_walk($arr, function (&$item) {
    $item = $item . '_i';
});

var_dump($arr); 
?>

6.png

注意到 &$item 了吗,是的,多了个&,代表着你的形参是以引用传递接收数据的。你要做的就是想办法改变这个参数。


php中遍历数组的五种方法是什么