PHP中的引用变量和变量类型

PHP中的引用变量

在PHP中,引用意味着用不同的名字访问同一个变量内容。
定义引用变量:使用&符号。

PHP引用变量的原理

普通变量赋值操作

1
2
3
$a = range(0,10);
$b = $a;
$a = range(0,20);

在执行如上代码时,将变量a赋值给变量b,这是并不会开辟新的内存空间,而是将变量a和b都指向同一个内存空间,当变量被改变时,才会重新开辟空间,这叫做COW(Copy Only Write),又叫做“写时复制”原则。

第一步(line1 line2)

第二步(line3):

引用变量赋值操作

1
2
3
$a = range(0,10);
$b = &$a;
$a = range(0,20);

执行如上代码时,将a的引用赋值给b,此时同样不会开辟新的内存空间,和普通变量赋值不同的是,引用变量不遵循COW原则,当变量a被修改后,指向同一地址空间的变量b的值也会发生变化。
第一步(line1 line2)

第二步(line3):

几点注意事项

  • unset() 只会取消引用,不会销毁空间。
  • 对象和资源变量类型默认进行引用赋值,因此不会有COW原则。若想复制一个对象,使用clone()函数。

变量类型

四种标量类型

  • boolean(布尔型)
  • integer(整型)
  • float(浮点型,也称作 double)
  • string(字符串)

    三种复合类型

  • array(数组)
  • object(对象)
  • callable(可调用)

    两种特殊类型

  • resource(资源)
  • NULL(无类型)