php 中的引用(&)与foreach结合后的一个注意点

关于php中引用的概念及foreach循环的的应用就不多说了,php文档已经说的很明白了。直接上一段代码:

<?php
 $arr = array(1,2, 3);
 foreach($arr as &$temp){
    $temp *=2;
 }

 var_dump($arr);  //---------------位置1--------------------

 foreach($arr as $temp) {

 }

 var_dump($arr); //---------------位置2--------------------

上面代码中 位置1 处输出:

array(3) {
  [0] =>
  int(2)
  [1] =>
  int(4)
  [2] =>
  int(6)
}

上面代码中 位置2 处输出:

array(3) {
  [0] =>
  int(2)
  [1] =>
  int(4)
  [2] =>
  int(4)
}

“位置1”输出解析:

了解引用的同学不难理解,第一个foreach循环中:

第一次循环 $temp 是 arr[0] 的引用;

第二次循环 $temp 是 arr[1] 的应用;

第三次循环 $temp 是 arr[2] 的引用;

而序号内部值都乘以2,所以 最后数组中的值变成了[2, 4, 6] 


“位置2”输出解析:

如上所述,循环结束后 $temp 是 arr[2] 的引用,所以对 $temp 进行赋值就相当于对 arr[2] 进行赋值。在第二个foreach循环中:

第一次循环结束后,数组变为[2, 4, 2];

第二次循环结束后,数组变为[2, 4, 4];

第三次循环结束后,数组变为[2, 4, 4];

所以 位置2 的输出便是如上。


注:若想彻底理解本文章中的代码重点要理解php中引用的感念。具体请见 点击我




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值