PHP foreach 遍历原理

前言

foreach 本质数组内有一个指针,指向数组元素的第一个元素,它利用移动指针的方式去获取数据。

过程

我们写一个简单的遍历代码,然后解释从 0 到 1 的过程:

# Array
$arr = ['true', 'false'];

# Ergodic
foreach($arr as $key => $value){
    echo $key . ':' . $value;
}

1. 首先系统会重置指针,也就是指向数组的第一个元素。

2. 紧接着进入循环,通过指针取得当前第一个元素,然后将下标取出放到定义的 $key 中(如果存在的话),同时进行的是取出值放到定义的 $value 中(指针下移)。

3. 然后进入循环内部,开始执行语句,也就是 echo (如果存在)。

4. 重复 2 和 3,直到在 2 的时候遇到指针取不到内容的时候,此时指针指向数组最后,结束。

副本

使用 foreach 遍历数组时,其实系统为我们建立了一个副本,遍历的结果 不会影响到原数组

# Array
$arr = array(1,2,3);

# 遍历
foreach($arr as $value){
    $value += 1;//尝试改变
    echo $value;//234
}

# 查看是否改变了元素组
print '<pre>';
print_r($arr);

在这里插入图片描述
说白了,遍历出来的 数据只负责展示,而不利于更新数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王二红

请作者喝杯咖啡 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值