PHP 函數的引用傳遞
上一篇我們了解下 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 語言的指針但又有區別,后面我們會陸續探明引用這個東西。
?
推薦文章
2025-01-18
2024-11-28
2024-11-09
2024-10-25
2024-06-25
2024-01-04
2023-11-06
2023-10-30
2023-10-13
2023-10-10
穩定
產品高可用性高并發貼心
項目群及時溝通專業
產品經理1v1支持快速
MVP模式小步快跑承諾
我們選擇聲譽堅持
10年專注高端品質開發