有沒有辦法在PHP中實現以下內容,還是僅僅是不允許? (請參閱下面的註釋行)從外部函數(PHP)中訪問函數中的局部變量
function outside() {
$variable = 'some value';
inside();
}
function inside() {
// is it possible to access $variable here without passing it as an argument?
}
有沒有辦法在PHP中實現以下內容,還是僅僅是不允許? (請參閱下面的註釋行)從外部函數(PHP)中訪問函數中的局部變量
function outside() {
$variable = 'some value';
inside();
}
function inside() {
// is it possible to access $variable here without passing it as an argument?
}
它不可能。如果$variable
是全球性變量,您可通過global
關鍵字來訪問該文件。但是這是一個功能。所以你不能訪問它。
雖然可以通過設置一個全局變量$GLOBALS
數組來實現。但是,你正在利用全球背景。
function outside() {
$GLOBALS['variable'] = 'some value';
inside();
}
function inside() {
global $variable;
echo $variable;
}
不,您不能從另一個函數訪問函數的局部變量,而不會將其作爲參數傳遞。
您可以使用global
變量,但變量不會保持本地。
您不能在函數中訪問本地變量。變量必須設置爲全局
function outside() {
global $variable;
$variable = 'some value';
inside();
}
function inside() {
global $variable;
echo $variable;
}
這工作
注意,使用global關鍵字是不可取的,因爲你無法控制的(你永遠不知道在您的應用程序是用在其他變量和改變) 。但如果你正在使用類,它會使事情變得更容易!
class myClass {
var $myVar = 'some value';
function inside() {
$this->myVar = 'anothervalue';
$this->outside(); // echoes 'anothervalue'
}
function outside() {
echo $this->myVar; // anothervalue
}
}
這是不可能的。你可以通過使用global
來完成。如果你僅僅只有不想定義參數,但可以給它裏面的功能,你可以使用:
function outside() {
$variable = 'some value';
inside(1,2,3);
}
function inside() {
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
}
}
爲看到PHP手冊funct_get_args()
不知道funct_get_args()函數,在某些情況下可能非常有用。謝謝! – hsdev 2012-03-10 17:20:12
儘管每個人都告訴你,你可以使用全局變量:相信我 - 不要使用它們。它們只適用於小衆情況,如果你開始使用它們,你會發現所有的代碼都會變成一場災難。 – 2012-03-10 12:52:57
如果你能解釋你正在嘗試完成的事情,也許我們可以想出一個很酷的kludge或者b)完成它的正確方法 – Jake 2012-03-10 14:01:18
我在研究某些代碼時想到了這種特殊情況,那些詢問會幫助我更清楚地瞭解不同的範圍。它做了! – hsdev 2012-03-10 17:29:23