1 $和$$定义

$var(一个美元)是一个正常变量,名称为:var,存储任何值,如:stringintegerfloat等。
$$var(两个美元)是一个引用变量,用于存储$var的值。
为了更好地理解$$$之间的区别,下面来看看一些例子。

2 示例

2.1 示例1

1
2
3
4
5
6
7
<?php  

$x = "abc";
$$x = 200;
echo $x."<br/>";
echo $$x."<br/>";
echo $abc;

运行结果:
abc
200
200

在上面的例子中,我们为变量x赋值为:abc。引用变量$$x的值分配为200。现在我们打印出变量:$x$$x$abc。由此可以看出:$$x$abc的值是相同的,即:因为 $x的值为abc,所以 $$x(${$x})计算后为$abc

2.2 示例2

1
2
3
4
5
6
7
8
9
10
<?php

$name = "Cat";
${$name} = "Dog"; // => $Cat = "Dog"
${${$name}} = "Monkey"; // => $Dog = "Monkey"
echo $name . "<br>"; // $name = "Cat"
echo ${$name} . "<br>"; // $Cat = 'Dog'
echo $Cat . "<br>";
echo ${${$name}} . "<br>"; // $Dog
echo $Dog . "<br>";

运行结果:
Cat
Dog
Dog
Monkey
Monkey

在上面的例子中,我们为变量$name指定了一个值Cat。 引用变量${$name}分配一个值:Dog${${$name}}分配一个值:Monkey
我们只需要进行替换即可,下面的等式是恒成立的:

1
2
3
$name = "Cat";
${$name} = "Dog"; => $Cat = "Dog";
${${$name}} = "Monkey"; => $Dog = "Monkey";

3 引用

引用就是让多个变量名同时指向计算机内存中同一块地址,其中一个变量修改内存中的值,那么通过其他变量名拿到的值,也会跟着变化。

1
2
3
4
5
6
7
8
9
10
11
<?php

$b = 1202;
$c = &$b;
echo '修改数据前<br>';
echo '$b=' . $b . '<br>';
echo '$c=' . $c . '<br>';
$c = 200;
echo '修改数据后<br>';
echo '$b=' . $b . '<br>';
echo '$c=' . $c . '<br>';

Reference

写在最后

欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。
微信公众号