最后两个调用方式有何区别?
<?php
$a = 1;
function func($a)
{
echo $a;
$a = 100;
}
func($a); //1
echo $a; //1
class A
{
public $a = 10;
}
$obj = new A();
func($obj->a); //10
echo $obj->a; //10
最后两个调用方式有何区别?
<?php
$a = 1;
function func($a)
{
echo $a;
$a = 100;
}
func($a); //1
echo $a; //1
class A
{
public $a = 10;
}
$obj = new A();
func($obj->a); //10
echo $obj->a; //10
func($obj->a),($obj->a)作为参数传入函数, 相当于将10赋值$a,然后执行函数体,输出10.
echo $obj->a;这里就是取属性的值,然后echo出来,输出10。
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答569 阅读✓ 已解决
784 阅读
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值传递和引用传递