五种遍历方法:1、用“for($i=0;$i<数组长度;$i++)”;2、用“foreach(数组 as=>$v)”;3、用“while(list($k,$v)=each(数组))”;4、用“array_map(回调函数,数组)”等。
本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑
方法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/>; } ?>
输出结果:
方法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/>; } ?>
输出结果:
遍历给定的 $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>; } ?>
输出结果:
使用匿名函数的方式,处理数组里的每个元素。遍历完成后返回一个新的数组
<?PHP $arr = ['a', 'b', 'c']; var_dump($arr); $arr = array_map(function ($item) { return $item . '_i'; }, $arr); var_dump($arr); ?>
你可以同时处理多个数组
<?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'] ?>
以引用传递的形式遍历你的数组,没有返回值,而且只能处理一个数组。
<?PHP $arr = ['a', 'b', 'c']; array_walk($arr, function (&$item) { $item = $item . '_i'; }); var_dump($arr); ?>
注意到 &$item
了吗,是的,多了个&
,代表着你的形参是以引用传递接收数据的。你要做的就是想办法改变这个参数。
推荐学习:《PHP教程》
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。