PHP引用问题-数组中foreach使用引用(二)

前段时间换工作,前后面试了大概两个礼拜,有十几家公司。现在把遇到的频率比较高的题目整理出来,给年后需要找工作的小伙伴参考。

在PHP 中引用的意思是:不同的名字访问同一个变量内容。
PHP地址相关的问题,一般喜欢两种形式的,一种是考察传值和传引用(具体可以参考请一篇文章PHP地址问题-传值与传引用(一))。另一种就是本篇文章说的,循环中使用引用(一般要修改数组中值,除了$k => $v形式,另一种就是&$v,感觉后一种逼格高一些)。
具体可以看下下面这个题目:

$arr = [1,2,3,4,5,6];
foreach ($arr as &$i) {
    $i = $i + 10;
}

foreach ($arr as $i) {
//   echo '<pre>';var_dump($array); echo "</pre>";
}

print_r($arr);

//运行结果
Array ( [0] => 11 [1] => 12 [2] => 13 [3] => 14 [4] => 15 [5] => 15 )

大部分人对前面5个值,可能没有疑惑。就不太明白为啥最后一个值还是15,这里就是$i惹的祸了。把第二次循环的$arr实时输出方便理解,单纯的想是有点难。

//运行过程中,第二个foreach循环时,$arr变化情况
array(6) {
  [0]=>
  int(11)
  [1]=>
  int(12)
  [2]=>
  int(13)
  [3]=>
  int(14)
  [4]=>
  int(15)
  [5]=>
  &int(11)
}
array(6) {
  [0]=>
  int(11)
  [1]=>
  int(12)
  [2]=>
  int(13)
  [3]=>
  int(14)
  [4]=>
  int(15)
  [5]=>
  &int(12)
}
array(6) {
  [0]=>
  int(11)
  [1]=>
  int(12)
  [2]=>
  int(13)
  [3]=>
  int(14)
  [4]=>
  int(15)
  [5]=>
  &int(13)
}
array(6) {
  [0]=>
  int(11)
  [1]=>
  int(12)
  [2]=>
  int(13)
  [3]=>
  int(14)
  [4]=>
  int(15)
  [5]=>
  &int(14)
}
array(6) {
  [0]=>
  int(11)
  [1]=>
  int(12)
  [2]=>
  int(13)
  [3]=>
  int(14)
  [4]=>
  int(15)
  [5]=>
  &int(15)
}
array(6) {
  [0]=>
  int(11)
  [1]=>
  int(12)
  [2]=>
  int(13)
  [3]=>
  int(14)
  [4]=>
  int(15)
  [5]=>
  &int(15)
}

看到这个输出就比较清楚了。
第一次循环完,$i是指向$arr最后一个值的引用。在第二次循环的时候,$i在循环遍历数组,同时在修改引用的值(数组的最后一个值)也可以理解存在:$i = &$i。

希望了解更多PHP引用相关知识可以看下知乎上的这篇文章:https://zhuanlan.zhihu.com/p/35107602

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值