&在php中表示按「引用」傳遞,我自己理解成「繫結位址」。
用在變數身上,可以把乙個變數與另乙個變數的位址繫結在一起。
$a="a";
// 變數預設拷貝值
$b=$a;
//&繫結後,改變$c,$a中任意乙個變數的值,另乙個也跟著變。
$c=&$a;
$a="aa";
echo 'a: '.$a."\n";
echo 'b: '.$b."\n";
echo 'c: '.$c."\n";
echo '-------------------'."\n";
$b="b";
echo '$b="b", $a: '.$a."\n";
$c="c";
echo '$c="c", a: '.$a."\n";
用在函式的形式引數身上,實際引數(變數)和形式引數也可以被繫結到一起。
//實參傳遞進來時與形參位址繫結到一起了,改變形參d值,實參自動改變。
function foo(&$f)
$bar="bar";
foo($bar); //這裡不能加&
echo '$bar: '.$bar."\n"; //$bar="f"
用在函式名前邊,可以把變數和函式的返回值繫結到一起。
// 繫結的是qux的返回值,也就是$q的位址。
function &qux()
$u=100;
echo '$u=100, $u: '.$u."\n";
//此處沒有繫結。
$u=qux();
echo '$u=qux(), $u: '.$u."\n";
$u=100;
echo '$u=100, $u: '.$u."\n";
$u=qux();
echo '$u=qux(), $u: '.$u."\n";
echo '-------------------'."\n";
//此時繫結了函式的返回值$q的值。
$u=&qux();
echo '$u=&qux(), $u: '.$u."\n";
//繫結後,改變$u的值,函式內的返回值$q也變成100.
$u=100;
echo '$u=100, $u: '.$u."\n";
//$q ++ 後變成101
$u=qux();
echo '$u=qux(), $u: '.$u."\n";
用在物件上可以一次銷毀所有物件引用。
$a=new $a();
$b=$a;
$c=&$a;
$a=null;
php5物件預設按引用傳遞,所以用和不用&,改變乙個物件的值,其他引用都跟著變。
但是,用了&後,如果把其中乙個物件賦值null,繫結位址的物件就都銷毀了,如果不用null,銷毀乙個,其他引用不會跟著銷毀。
class a
}$a=new a();
$b=$a;
$c=&$a;
echo $a->aa."\n";
echo $b->aa."\n";
echo $c->aa."\n";
$b->aa="hello";
//全都輸出hello,證明用不用&都是按引用傳遞的。
echo $a->aa."\n";
echo $b->aa."\n";
echo $c->aa."\n";
$a=null; //或 $c=null; 效果是一樣的。
//$a肯定不存在了。
echo $a->aa."\n";
//$b還能輸出hello,證明不用&,銷毀$a,不影響$b.
echo $b->aa."\n";
//$c也不存在了,說明使用&繫結的物件,銷毀乙個,另乙個被銷毀。
echo $c->aa."\n";
在巨集中的作用
用於將兩個字串連線起來。例如 define declare dynamic class name public static cruntimeclass class class name virtual cruntimeclass getruntimeclass const 巨集 declare d...
」「在mybatis中的作用
在使用mybatis 時我們sql是寫在xml 對映檔案中,如果寫的sql中有一些特殊的字元的話,在解析xml檔案的時候會被轉義,但我們不希望他被轉義,所以我們要使用來解決。是什麼,這是xml語法。在cdata內部的所有內容都會被解析器忽略。如果文字包含了很多的 字元 和 字元 就象程式 一樣,那麼...
PHP中header的作用
php 中 header 函式的作用是給客戶端傳送頭資訊。什麼是頭資訊?這裡只作簡單解釋,詳細的自己看http協議。在http協議中,伺服器端的回答 response 內容包括兩部分 頭資訊 header 和 體內容,這裡的頭資訊不是html中的部分,同樣,體內容也不是 body 頭資訊是使用者看不...