PHP學習筆記(引用變量、可變變量、靜態變量)

一、引用變量

引用變量是指用不同的變量名去訪問同一個變量內容,即兩個不同的變量指向同一個內容。引用變量通過符號“&”進行定義。例如:

$var1 = &$var2;

將變量$var1和變量$var2指向同一個內容。引用後,變量$var1$var2完全相同。
引用變量不同於一般的變量賦值。當用一個變量向另一個變量賦值時,例如:

$var1 = $var2;

這種賦值是將變量$var2的值複製給$var1,兩個變量只在這條語句存在聯繫。賦值完成後,兩個變量之間不再存在聯繫,$var1的變化不會影響$var2,同樣$var2的變化也不會影響$var1

而引用變量並不是複製一個值的變量給另一個變量,而是將兩個變量指向同一內容,可以理解爲將一個變量的地址傳遞給另一個變量。引用後,兩個變量完全相同。完全相同是指兩個變量是完全等價的,可以通過其中任一個變量訪問、修改所指向的這個內容。對其所指向的同一內容的修改也會反映在兩個變量值上。

二、可變變量

可變變量是指變量的名稱並不是預先預定好的,而是動態地設置和使用。一般是指使用一個變量的值作爲另一個變量的名稱,所以可變變量又稱變量的變量。
可變變量通過在一個變量名稱前使用兩個"$"符號實現,如下所示:

<?php
	$str = "name";
	$name = "John";
	$out_str = $$str; //相當於$out = $name
	$out_str = ${$str}; //功能與上一條語句相同,形式上更直觀
?>

可變變量可以用在流程控制結構中,根據流程的不同狀態設置不同的變量名。如下在for循環中動態設置變量名:

<?php
	$var_name = "str"'
	$str1 = "The first string";
	$str2 = "The second string";
	$str3 = "The third string";
	for($i=0; $i<3; $i++){
		echo ${$var_name.$i};
	}
?>

三、靜態變量

靜態變量在函數內部定義,只侷限於函數內部使用,但卻具有和程序文件相同的生命週期,即靜態變量一旦被定義,則在當期程序文件結束之前一直存在。

靜態變量通過在變量前使用關鍵詞static定義,格式如下:

static $var_name;

使用靜態變量示例:

<?php
/**
 * Created by PhpStorm.
 * User: wei19
 * Date: 2019/2/26
 * Time: 11:25
 */

//使用靜態變量
function func1()
{
    $num = 0;
    echo $num;
    $num++; //將num加1
}

function func2()
{
    static $num = 0;
    echo $num;
    $num++;
}
//將哪兩個函數分別執行20次
for ($i = 0; $i < 10; $i++) {
    func1();
}
echo "<br>";
for ($i = 0; $i < 10; $i++) {
    func2();
}
echo "<br>";
for ($i = 0; $i < 10; $i++) {
    func1();
}
echo "<br>";
for ($i = 0; $i < 10; $i++) {
    func2();
}
//輸出結果爲:
//0000000000
//0123456789
//0000000000
//10111213141516171819

在上述代碼中,函數func1()中定義了一個局部變量$num,每次在執行func1()時,變量$num被賦初值0,然後使用echo輸出。雖然在函數最後將$num加1,但是,每次func1()執行結束後,該變量便不存在了,所以將func1()連續執行10次得到的結果是連續輸出10個‘0’。第二次連續執行10次仍然得到10個‘0’。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章