美文网首页
两个例子弄懂PHP引用传值

两个例子弄懂PHP引用传值

作者: 乔四儿丶 | 来源:发表于2020-09-04 15:40 被阅读0次

例1

$a=[1,2,3];  
foreach($a as &$v){
   print($v);
   print_r($a);
}  
foreach($a as $v){
   print($v);
   print_r($a);
} 
// 执行结果
1Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
2Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
3Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
1Array
(
    [0] => 1
    [1] => 2
    [2] => 1
)
2Array
(
    [0] => 1
    [1] => 2
    [2] => 2
)
2Array
(
    [0] => 1
    [1] => 2
    [2] => 2
)

解读:

  1. 第一个循环没什么特别,只是在遍历数组的最后一个元素后,'$v'值的地址指向数组的最后一个元素
  2. 第二个循环的第一次遍历,遍历数组的第一个元素,'foreach($a as $v)' 这个操纵会把第一个元素赋值给'$v',而且此时'$v'的地址指向数组的最后一个元素,所以第一次遍历后数组是{1,2,1}
  3. 第二个循环的第二次遍历,同上
  4. 第二个循环的第三次遍历,此时循环遍历的值刚好是'$v'地址指向的值

例2

$d = ['a', 'b', 'c'];
foreach($d as $k => $val)
{
  $val = &$d[$k];
  print($val);
  print_r($d);
}
// 执行结果
aArray
(
    [0] => a
    [1] => b
    [2] => c
)
bArray
(
    [0] => b
    [1] => b
    [2] => c
)
cArray
(
    [0] => b
    [1] => c
    [2] => c
)

解读:

  1. 循环的第一次遍历,将'$val'的值指向数组的第一个值的地址
  2. 循环的第二次遍历,'foreach($d as $k => $val)'这个操作把'$val'赋值成'b',所以数组的第一个元素也变成'b'
  3. 循环的第三次遍历,同上

相关文章

  • 两个例子弄懂PHP引用传值

    例1 解读: 第一个循环没什么特别,只是在遍历数组的最后一个元素后,'$v'值的地址指向数组的最后一个元素 第二个...

  • 基础知识点

    基础知识点 单双引号 传值方式 赋值传值 : 赋值时直接赋值固定值 引用传值: 参考文章:PHP取地址符(引用符)...

  • PHP开发经验总结

    请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用? 按值传递:函数范围内对值的任何改变在函数外部都...

  • 函数的参数是按值传递

    先看个传参为原始值的例子 下面讨论传参是引用值的例子 当调用函数,函数内部给obj设置了name值,函数外部也反映...

  • PHP传值和传引用

    传值 把实参的值赋值给行参,相当于copy,系统将为目标对象重新开辟一个完全相同的内存空间 对行参的修改不...

  • 学习PHP弱引用的知识

    之前的文章中,我们已经学习过引用和引用传值相关的知识。我们知道,PHP 中没有纯引用(指针),不管是对象,还是用引...

  • JavaScript学习 之 传值or传引用

    目录 引言 传值? 传引用? 基础类型传值-对象类型传引用? 传共享! 小结 引言 JavaScript的函数参数...

  • call by value or reference ?

    Java中参数传递是传值还是传引用呢?很多人遇到这个问题都会马上给你抛出这个例子: 运行结果: before:a=...

  • Android工程师学Golang(一) 函数

    Golang函数 注:是用的测试方法写的例子。 Golang所有都是传值,不是传引用为什么会出现,函数内部的修改,...

  • java调用方法传递机制

    java是传值,不是传引用,有人说有的人说:基础类型传值,对象类型传引用。其实对象类也是传值,只不过对象的值恰好是...

网友评论

      本文标题:两个例子弄懂PHP引用传值

      本文链接:https://www.haomeiwen.com/subject/pjwzsktx.html