php基础——变量的传递方式
2020-06-29 04:51
513 查看
变量传递方式(非对象)
非对象的变量是没有对象标识符的,标识符为对象特有的
变量传值赋值
$a = 'hello'; $b = $a; if ($a===$b){ echo '$a===$b'; // $a===$b }
变量引用赋值
$a = 'hello'; $b = &$a;
数组和资源的赋值操作也是传值赋值
// 数组赋值操作也是传值赋值(值传递) $a = array('name'=>'zy','age'=>18); $b = $a; $b['name'] = 'xx'; var_dump($a,$b); // // 资源赋值操作也是传值赋值 $con = mysqli_connect('localhost','root',''); $d = $con; $d = null; var_dump($con,$d);
对象比较特殊,其实对象的赋值操作也是值传递,只不过传递的是对象标识符
详情查看对象的传递方式
测试代码
- unset()销毁的是变量名
- 至于内存中的数据是否销毁,取决于是否仍有变量指向它,若没有,垃圾回收机制销毁
$a = 'hello'; $b = &$a;$b = null; var_dump($a,$b); // null null $a1 = 'hello'; $b1 = $a1; $b1 = null; var_dump($a1,$b1); // 'hello' null $a2 = 'hello'; $b2 = &$a2; unset($b2); var_dump($a2,$b2); // 'hello' Undefined variable: b2 $a3 = 'hello'; $b3 = $a3; unset($b3); var_dump($a3,$b3); // 'hello' Undefined variable: b3
延伸知识
- 赋值操作,如果
$p1
非对象,$p1
也是值传递 - 赋值操作,如果
$p1
是对象,$p1
也是值传递,只不过传递的是对象标识符
class Person{ public $name; } $p1 = new Person(); $a = [1,2,5,['zz',$p1]]; $b = $a; if ($a===$b){ echo '$a===$b'; // $a===$b } $b[3][1]->name = '唐僧'; var_dump($a,$b); // 两个值都改了
相关文章推荐
- javascript基础:函数传递参数的方式、参数数组、变量范围(变量作用域)
- php基础---变量的传值方式
- php 必要基础知识温补之 变量地址的传递
- PHP脚本无法传递POST变量的解决方式
- PHP_零基础学php_2变量、预定义变量、预定义常量、表达式、运算符、程序控制流程
- 【c基础】c语言 变量 数组元素 数组名做函数参数传递
- php接收从表单传递过来的变量.
- 怎么将JS里面的变量传递到PHP里面去
- PHP基础知识3——数据库操作方式
- php变量在内核中的存储方式
- php 函数参数传递的方式传值传址
- js中变量的传递方式
- php基础学习之变量的使用
- PHP页面间参数传递的四种方式
- php的基础知识以及常量,变量
- PHP基础之变量3——变量范围
- PHP基础:预定义变量
- php基础系列之字符串——字符的四种方式表达
- PHP页面间参数传递的四种方式
- PHP基础之魔术变量