在PHP中,有一個(gè)非常重要的概念:global。global是一個(gè)全局變量,可以在函數(shù)內(nèi)部和外部使用。
舉個(gè)例子,假如在一個(gè)函數(shù)內(nèi)部想要訪問(wèn)并修改一個(gè)在函數(shù)外部定義的變量,就需要使用global。例如:
<?php
$x = 5;
function test() {
global $x;
echo $x; // 輸出 5
$x = 10; // 修改全局變量 $x 的值
}
test();
echo $x; // 輸出 10
?>
在上面的例子中,函數(shù)test()訪問(wèn)并修改了在函數(shù)外部定義的變量$x。在函數(shù)內(nèi)部使用global $x;將變量$x標(biāo)記為全局變量,在函數(shù)內(nèi)部就可以訪問(wèn)和修改它了。函數(shù)test()中修改的變量$x的值也影響了函數(shù)外部的變量$x。
除了全局變量,global還可以用于訪問(wèn)和修改全局?jǐn)?shù)組。舉個(gè)例子,假如在一個(gè)函數(shù)內(nèi)部想要訪問(wèn)并修改一個(gè)全局?jǐn)?shù)組$names,也需要使用global。例如:
<?php
$names = array("Alice", "Bob", "Charlie");
function addName($name) {
global $names;
$names[] = $name; // 在數(shù)組末尾添加一個(gè)元素
}
addName("David");
print_r($names); // 輸出 Array ( [0] => Alice [1] => Bob [2] => Charlie [3] => David )
?>
在上面的例子中,函數(shù)addName()訪問(wèn)并修改了一個(gè)在函數(shù)外部定義的全局?jǐn)?shù)組$names。在函數(shù)內(nèi)部使用global $names;將全局?jǐn)?shù)組$names標(biāo)記為全局變量,在函數(shù)內(nèi)部就可以訪問(wèn)和修改它了。函數(shù)addName()中添加的元素也影響了函數(shù)外部的全局?jǐn)?shù)組$names。
還需要注意的是,global只能在函數(shù)內(nèi)部使用,并且在使用之前必須先聲明變量名為全局變量。如果在函數(shù)內(nèi)部使用一個(gè)沒(méi)有聲明為全局變量的變量,PHP會(huì)認(rèn)為它是函數(shù)內(nèi)部的局部變量。例如:
<?php
$x = 5;
function test() {
$x = 10; // 聲明了一個(gè)局部變量 $x
}
test();
echo $x; // 輸出 5,沒(méi)有被修改
?>
在上面的例子中,盡管函數(shù)test()中聲明了一個(gè)變量$x,但它只是一個(gè)局部變量,不會(huì)修改函數(shù)外部的全局變量$x。
總之,global是一個(gè)非常有用的PHP語(yǔ)言特性,可以訪問(wèn)和修改全局變量和全局?jǐn)?shù)組。開發(fā)者需要注意聲明變量為全局變量,并在函數(shù)內(nèi)部使用global來(lái)訪問(wèn)和修改全局變量。