2011-04-16 52 views
0

我有以下php函數。使PHP變量或數組不存在它設置的功能

function a() { 
    $var = "variable"; 
    return $var; 
} 
function b() { 
    $arr = array('a','r','r','a','y'); 
    return $arr; 
} 

還有一些PHP不在這些函數中。

$var = a(); 
$arr = b(); 
print_r($var); 
print_r($arr); 

$var$arr在功能來定義,但隨後被的功能以外重新定義。我該怎麼做才能讓函數中的變量和數組與函數中的變量和數組分開,以便函數中的變量和數組不在函數之外?

+1

只要函數返回,裏面的所有東西都會被「銷燬」。你到底想做什麼?你遇到任何問題嗎? – 2011-04-16 01:18:35

+1

他們*是*分開;你不需要做任何事情來讓他們分開。具有相同的名稱並不意味着它們是相同的變量。 – 2011-04-16 01:20:09

+0

但是在進入web開發之前,請學習一些編程基礎知識。即使是一個0.00美元的介紹教程(甚至語言中立)編程也有不同的範圍。這可以讓您在網頁開發方面獲得更令人滿意的體驗。如果你有這樣的疑惑,我不想說但是......你不會走得太遠,這可能會令人沮喪。 PHP有一些奇怪的地方,它是* duck typed *,看起來並不容易。不容易調試。 – gd1 2011-04-16 01:25:47

回答

5

函數有自己的範圍。除非使用global關鍵字定義,否則您的函數變量不在函數之外。您可能會在函數內部和外部使用相同的變量名稱來混淆自己。嘗試將函數變量分別更改爲$fx_arr$fx_var。你會看到它們不存在於函數之外。

+0

好的,謝謝!這有幫助。我真正的問題是在別的地方。 – 2011-04-16 01:30:19

1

你需要更仔細地在a()宣佈evariable scope in php

$var閱讀只是a()'s範圍內可見。 $arrb()也是如此。

這段代碼$var = a();應該讀這樣:

創建全局(用於文檔的範圍)可變$var並指定由a()返回到它的價值。 步進到a()我們有: 創建本地(僅在函數範圍內可見)變量$var並將'變量'賦值爲值,然後返回值$var

最後你最後得到了兩個具有相同名稱但範圍不同的變量,因此它們不會相互重疊/覆蓋。

相反也是有效的,全局變量在函數範圍內是不可見的。您需要使用全局運算符來使它們(導入它們)在函數範圍內可見。

希望能幫到你。 :)