PHP遍历数组
PHP 编程中常用 for、foreach、each()、list() 对数组进行遍历。
以上程序的执行结果如下:
运行以上程序的输出结果为:
在 PHP 7 中运行以上程序的输出结果为:
而在 PHP 7 之前的版本中则会输出:
在使用 foreach 循环遍历数组的时候,foreach 是对数组的备份进行操作,在循环内部修改数组不会对循环之外访问数组有影响。示例如下:
运行程序,输出结果是:
运行以上程序的结果为:
each() 的使用示例如下:
执行以上程序的结果如下:
each() 函数和 list() 函数结合可以遍历数组,示例如下:
执行以上程序的结果为:
也可以使用 list() 将数组的值分别赋给变量,示例如下:
执行以上程序的输出结果为:
注意以下例子:
在 PHP 5 中的输出结果是:
for 循环遍历数组
使用 for 循环遍历数组的一个例子如下:
- <?php
- $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
foreach 遍历数组
示例如下:
- <?php
- $array = [0, 1, 2];
- foreach ($array as &$val){ // 遍历数组
- echo $val;
- }
- ?>
012
再给出一个示例:
- <?php
- $array = [0, 1, 2];
- foreach ($array as &$val){
- var_dump(current($array)); // 遍历数组, 使用current()输出数组指针指向的当前单元的值
- }
- ?>
int(0) int(0) int(0)
说明 PHP 7 没有改变数组内部的指针。而在 PHP 7 之前的版本中则会输出:
int(1) int(2) bool(false)
说明 PHP 7 之前的版本在进行 foreach 循环时会改变数组内部的指针。在使用 foreach 循环遍历数组的时候,foreach 是对数组的备份进行操作,在循环内部修改数组不会对循环之外访问数组有影响。示例如下:
- <?php
- $arr = array(0, 1, 2);
- foreach ($arr as $val){
- $val = $val*2; // 元素值乘以2
- }
- print_r($arr);
- ?>
Array
(
[0] => 0
[1] => 1
[2] => 2
)
- <?php
- $arr = array(0, 1, 2);
- foreach ($arr as &$val){
- $val = $val*2; // 元素值乘以2
- }
- print_r($arr);
- ?>
Array
(
[0] => 0
[1] => 2
[2] => 4
)
each() 和 list() 函数
each() 函数返回数组中当前的键值并将数组指针向前移动。在执行 each() 之后,数组指针将停留在数组中的下一个元素或者当碰到数组结尾时停留在最后一个元素。如果要再用 each 遍历数组,就必须使用 reset()。each() 的使用示例如下:
- <?php
- $info = array("新宝库", "PHP教程", "https://www.xinbaoku.com/php/", "8年", "友亿司");
- $val1 = each($info); //指针向后移动一步
- print_r($val1);
- echo current($info) . "\n"; //当前指针指向值
- $val2 = each($info);
- print_r($val2);
- echo current($info) . "\n";
- ?>
Array
(
[1] => 新宝库
[value] => 新宝库
[0] => 0
[key] => 0
)
PHP教程
Array
(
[1] => PHP教程
[value] => PHP教程
[0] => 1
[key] => 1
)
https://www.xinbaoku.com/php/
each() 函数和 list() 函数结合可以遍历数组,示例如下:
- <?php
- $info = array(
- "website" => "新宝库",
- "course" => "PHP教程",
- "url" => "https://www.xinbaoku.com/php/",
- "age" => "8年",
- "author" => "友亿司"
- );
- while( list($key, $val) = each($info) ) {
- echo "$key => $val\n";
- }
- ?>
website => 新宝库
course => PHP教程
url => https://www.xinbaoku.com/php/
age => 8年
author => 友亿司
也可以使用 list() 将数组的值分别赋给变量,示例如下:
- <?php
- $info = array("新宝库", "PHP教程", "https://www.xinbaoku.com/php/", "8年", "友亿司");
- list($website, $course, $url, $age, $author) = $info;
- echo $website . "\n" . $course . "\n" . $url . "\n" . $age . "\n" . $author;
- ?>
新宝库
PHP教程
https://www.xinbaoku.com/php/
8年
友亿司
注意以下例子:
- <?php
- $info = array("新宝库", "PHP教程", "https://www.xinbaoku.com/php/", "8年", "友亿司");
- list($arr[0], $arr[1], $arr[2]) = $info;
- print_r($arr);
- ?>
Array
(
[2] => https://www.xinbaoku.com/php/
[1] => PHP教程
[0] => 新宝库
)
Array
(
[0] => 新宝库
[1] => PHP教程
[2] => https://www.xinbaoku.com/php/
)
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算