在php中的作用

2021-06-28 01:37:11 字數 2068 閱讀 4886

&在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 頭資訊是使用者看不...