PHP中的普通变量定义和函数传值比较简单,但可变标识符与函数传址或引用就比较复杂,下面我们来研究一下PHP中的可变标识符和函数传值与传址(引用),希望大家能有所收获。
可变标识符
在PHP中定义变量需要$,那么我们来看看$在可变标识符的应用。
可变变量
可变函数
可变下标
可变类名
可变属性
可变方法
通过上面的例子,我们可以看出不管$用的如何千变万化,其本质都是用来定义或者说明一个变量的,我们只需抓住本质就可以了。
引用传值
普通的变量的引用赋值: $a = &$b,变量a和变量b指向的是用一个内存。
函数调用时的引用参数传递
输出的结果是5
早期php是在调用时通过&符号传递引用类型的变量, 比如: func(&$arg);不过现在不能使用了。后来, 函数的引用类型参数被规定为需要在函数声明时定义, 比如: function func(&$arg),也就是我上面的写法。
注: 引用声明时定义引用类型参数后, 运行时引用参数传递被废弃, 需要在php.ini中增加allow_call_time_pass_reference来开启。
PHP函数参数传递是值传递,普通的变量或者数组都是拷贝一份数据,如果传递的是对象的变量,修改了对象的属性是会发生变化的,因为对象的变量存的是对象的地址。
比如:
结果:
对象变量的传递虽然也是值传递,但是这个值存的是对象的地址。比如:
结果:
函数返回值是引用类型
函数返回值是引用类型需要声明函数时, 在函数名前增加&符号, 并且, 在调用时, 要用引用赋值方式。
例如:
结果: