PHP引用的&理解
什麼是引用?
php的引用可以理解為變數的別名,由於php的變數名是儲存在符號表(symbol table)中的,變數內容是儲存在堆中,引用就是用符號表中的不同符號(symbol)名稱訪問同一儲存內容,和Unix檔案系統中的hardlink是一個概念,比如:
php
$a = 1;
$b = &$a; //$a與$b指向同一內容
$b = 2;
echo $b; //2
echo $a; //2
引用傳遞
如果想要在函式修改一個變數的值,可以透過引用傳遞將變數傳遞給函式,如下:
function test(&$var)
{
$var++;
}
$a = 1;
test(&$a);
echo $a; //結果為2
注意在函式呼叫中沒有引用符號,只有在函式定義中有。在php5.6.27版本函式呼叫使用引用符號,會導致:”( ! ) Fatal error: Call-time pass-by-reference has been removed”
引用返回
引用返回用在想用函式找到引用應該繫結在哪一個變數上!
class foo {
public $value = 42;
public function &getValue() {
return $this->value;
}
}
$obj = new foo;
$myValue1 = &$obj->getValue(); //使用&符號,返回是一個引用
$myValue2 = $obj->getValue(); //沒有使用&符號
$obj->value = 2;
echo $myValue1.'
'; //2
echo $myValue2.'
'; //42
Note:和引數傳遞不同,這裡必須在函式定義和函式呼叫兩個地方使用“&”引用符號–指出返回的是一個引用,而不是通常的一個複製,同樣也指出 $myValue1 是作為引用的繫結,而不是通常的賦值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3349/viewspace-2804568/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- php 傳值與傳引用的理解(通俗易懂)PHP
- 深入理解PHP中賦值與引用PHP賦值
- 理解Java的強引用、軟引用、弱引用和虛引用Java
- PHP 引用PHP
- 【JVM】如何理解強引用、軟引用、弱引用、虛引用?JVM
- 理解Java中的弱引用Java
- PHP5的OOP–$this引用PHPOOP
- 強引用、軟引用、弱引用、幻象引用再不理解就晚了
- 理解 ARC 下的迴圈引用
- PHP中物件的引用傳遞PHP物件
- PHP引用的一個面試題PHP面試題
- 一篇搞懂 PHP 的引用PHP
- java的引用:用C++/C的引用和指標去理解JavaC++指標
- 3. PHP 引用解惑PHP
- 簡單理解C++引用C++
- 深入理解Java的分級引用模型Java模型
- PHP 類多次引用報錯PHP
- PHP物件導向之&引用PHP物件
- 引用-PHP手冊筆記PHP筆記
- PHP的引用計數是什麼意思?PHP
- PHP的垃圾回收機制-引用計數PHP
- PHP物件的引用及物件優化策略PHP物件優化
- PHP 閉包的理解PHP
- 理解 PHP 中的 StreamsPHP
- 從JDK原始碼理解java引用JDK原始碼Java
- 十分鐘理解Java中的弱引用Java
- Python 中的引用和類屬性的理解Python
- php函式引用傳遞引數的方法PHP函式
- php的變數引用與銷燬機制PHP變數
- PHP socket 的簡單理解PHP
- php-多型的理解PHP多型
- 關於引用(python中的偽指標)的理解Python指標
- 理解類引用這種型別 (轉)型別
- PHP的引用操作符& 的使用及注意事項PHP
- PHP 引用詳解 - 踩坑與妙用PHP
- php中物件是引用型別嗎?PHP物件型別
- PHP取地址符(引用符)&詳解PHP
- php傳引用和全域性變數PHP變數