首页 > Web开发 > 详细

php foreach循环引用的问题

时间:2020-02-21 16:15:57      阅读:47      评论:0      收藏:0      [点我收藏+]

使用代码   在嵌套使用循环的时候 要注意循环引用的问题

demo 

$arr = [
            ‘a‘, ‘b‘,
            ‘c‘, ‘d‘,
        ];
        foreach ($arr as &$each){
            var_dump($arr);
        }
        foreach ($arr as $each){
            var_dump($arr);
        }

  

输出结果

 

array(4) {
  [
    0
  ]=>
  &string(1) "a"
  [
    1
  ]=>
  string(1) "b"
  [
    2
  ]=>
  string(1) "c"
  [
    3
  ]=>
  string(1) "d"
}
array(4) {
  [
    0
  ]=>
  string(1) "a"
  [
    1
  ]=>
  &string(1) "b"
  [
    2
  ]=>
  string(1) "c"
  [
    3
  ]=>
  string(1) "d"
}
array(4) {
  [
    0
  ]=>
  string(1) "a"
  [
    1
  ]=>
  string(1) "b"
  [
    2
  ]=>
  &string(1) "c"
  [
    3
  ]=>
  string(1) "d"
}
array(4) {
  [
    0
  ]=>
  string(1) "a"
  [
    1
  ]=>
  string(1) "b"
  [
    2
  ]=>
  string(1) "c"
  [
    3
  ]=>
  &string(1) "d"
}
array(4) {
  [
    0
  ]=>
  string(1) "a"
  [
    1
  ]=>
  string(1) "b"
  [
    2
  ]=>
  string(1) "c"
  [
    3
  ]=>
  &string(1) "a"
}
array(4) {
  [
    0
  ]=>
  string(1) "a"
  [
    1
  ]=>
  string(1) "b"
  [
    2
  ]=>
  string(1) "c"
  [
    3
  ]=>
  &string(1) "b"
}
array(4) {
  [
    0
  ]=>
  string(1) "a"
  [
    1
  ]=>
  string(1) "b"
  [
    2
  ]=>
  string(1) "c"
  [
    3
  ]=>
  &string(1) "c"
}
array(4) {
  [
    0
  ]=>
  string(1) "a"
  [
    1
  ]=>
  string(1) "b"
  [
    2
  ]=>
  string(1) "c"
  [
    3
  ]=>
  &string(1) "c"
}

 

原因 是

php的foreach会在每次循环时,讲当前元素赋值给each, 然后进入循环体

当foreach遍历完成后, each变量没有释放而是指向了arr数组中的最后一个元素, 所以在后面给each赋值时, 其实改变的时arr数组的最后一个元素  所以最后一个一直在引用赋值

 

php foreach循环引用的问题

原文:https://www.cnblogs.com/guokefa/p/12341739.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!