扫码关注官方订阅号
最后两个调用方式有何区别?
a); //10 echo $obj->a; //10
认证高级PHP讲师
echo1:虽然调用了方法,但是方法内在赋值前echo的,所以输出的就是最上面赋值的1;
echo
echo2:输出`$a`,调用过`func()`,但是传递的参数是普通变量所以只是值传递,执行过方法后并不更改他的值;
echo1:调用了func(),传的参数是A对象中的属性a,$obj->a为10,而方法执行时echo在赋值前,所以输出的是10;
func()
$obj->a
echo2:虽然`$obj`是一个对象,但是传递的参数还是一个普通变量而已,所以还是值传递;所以和上面的echo2原理相同;
我想楼主一定想看到一个输出为100的,那你可以尝试调用方法func($obj),传递参数为对象$obj,然后在func()方法中为$obj->a赋值,这样第二次echo输出的就是100了,原因是在php中,对象作为参数传递都是引用传递,所谓引用传递就是指向同一个指针,所以执行完func()后$obj->a为100php值传递和引用传递
func($obj)
$obj
看了你的代码,不清楚你想表达什么意思?
什么意思啊,值传递实参不影响形参?
func($obj->a),($obj->a)作为参数传入函数, 相当于将10赋值$a,然后执行函数体,输出10.echo $obj->a;这里就是取属性的值,然后echo出来,输出10。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
echo1:虽然调用了方法,但是方法内在赋值前
echo的,所以输出的就是最上面赋值的1;echo1:调用了
func(),传的参数是A对象中的属性a,$obj->a为10,而方法执行时echo在赋值前,所以输出的是10;我想楼主一定想看到一个输出为100的,那你可以尝试调用方法
func($obj),传递参数为对象$obj,然后在func()方法中为$obj->a赋值,这样第二次echo输出的就是100了,原因是在php中,对象作为参数传递都是引用传递,所谓引用传递就是指向同一个指针,所以执行完func()后$obj->a为100php值传递和引用传递
看了你的代码,不清楚你想表达什么意思?
什么意思啊,值传递实参不影响形参?
func($obj->a),($obj->a)作为参数传入函数, 相当于将10赋值$a,然后执行函数体,输出10.
echo $obj->a;这里就是取属性的值,然后echo出来,输出10。