複習PHP-語言參考-引用

來源:互聯網
上載者:User

標籤:blank   target   影響   

1.引用指的是不同的名稱訪問同一個變數內容

最簡單的例子為:

<?php

$a = &$b;

?>

在形參中加入引用變數,則實參會在函數執行時被影響。

自 PHP 5 起,new 自動返回引用,所以$a = & new a;會報錯。

注意以下一個樣本:

<?php
$a = 5;
$b = 7;
function foo()
{
    global $a,$b;
    $b = &$a; // if $GLOBALS[‘b’] = &$a;  $b的值在外部就會變成$a的引用  5
}
foo();
echo $a; //5
echo $b; //still 7
?>

所以這裡如果要改變$b,可以改寫為$GLOBALS[‘b’];

注意以下一個樣本:

<?php
$a = 5;
$b = 7;
function foo(&$var)
{
    $var = &$GLOBALS["b"];
}
foo($a);
echo $a; //still 5
echo $b; //7
?>

所以PHP裡的引用,不能把它看作一個指標,它是一個不標準的東西。妹的。。 操 真奇怪。(通俗一點說,傳參的引用不能再被引用賦值)

上面這個例子可以這麼理解:$var在foo調用時被綁定在$a身上,然後在函數裡面又被綁定在$GLOBALS[“b”]身上,事實上$var並沒有改變什麼,所以不起作用。

2.引用返回

參見下例:

<?php
function &foo($a)
{
    return $a;
}
$a = 5;
$b = &foo($a);
$c = foo($a);
$a = 6;
echo $a; //6
echo $b; //5
echo $c; //5
?>

有這個概念就行了,暫時也不理解為毛要這麼用。 哎。。 以後再說吧

3.取值 (Dereference)

<?php
$a = 5;
$b = & $a;
unset($a);
echo $a;
echo $b;
?>

注意:這裡的刪除只是刪除了這個值的引用而矣,值並不會變化。所以$b依然是5,$a不存在了,所以這裡可以得出一個結論,直接賦值($a = 5)實際上$a是5這個值的一個引用(我個人的結論)。

4.引用定位

以下一個例子:

<?php

$var = &$GLOBALS[‘var’];

unset($var); //因為引用賦值的變數就是它本身,所以。。這裡刪除後,$GLOBALS[‘var’]也同樣被刪除了。

?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.