上一篇我们了解下 C 语言里的三种参数传递。注意,PHP 中的引用跟 C 的引用是有区别的,跟 C 指针也不同(C 语言中的指针里面存储的是变量的内容,在内存中存放的地址)。替代的是,引用是符号表别名。
怎么说呢?在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。在 PHP 中引用意味着用不同的名字访问同一个变量内容。最接近的比喻是 Unix 的文件名和文件本身——变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的 hardlink。
举个例子:
1 |
$a = "nowamagic" ; |
2 |
$b =& $a ; |
3 |
echo $b . $a ; |
这意味着 $a 和 $b 指向了同一个变量。同一个变量内容有不同的变量名,引用就是这么个回事。
我们先来一个函数引用传递问题:
1 |
function test(& $a ) |
2 |
{ |
3 |
$a = $a +100; |
4 |
} |
5 |
6 |
$b = 1; |
7 |
test( $b ); |
8 |
echo $b ; |
猜猜答案是多少?
好像是 101 吧?函数 test() 直接拿变量的地址作为参数……然后将变量的值+100. test($b) 这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值就可以改变$b的值了。
这就是 PHP 的引用,有点类似 C 语言的指针但又有区别,后面我们会陆续探明引用这个东西。
推荐文章
2020-12-24 17:45:25
2020-12-25 18:14:28
2020-12-29 18:14:44
2020-12-30 18:10:20
2020-12-31 16:49:25
2021-01-04 17:50:49
2021-01-05 18:29:14
2021-01-07 17:05:58
稳定
产品可用性高于99.9%贴心
全国7*24小时客服热线专业
产品经理在线技术支持快速
快速上线运营快承诺
我们选择声誉坚持
10年专注高端品质开发