2014-03-25 76 views
0

我有一個數組的索引,anArray,通過我循環,像這樣:

foreach ($anArray as $key) { 

    echo $_GET[$key]; 

} 

我得到許多錯誤說法:

未定義指數:$關鍵

這是事實,但我不知道如何讓我的PHP認識到$關鍵是一個變量,而不是隻是一個字符串。

如果我打印出$ _GET $ key => $ value對的列表和$ anArray的列表,它們都包含至少一些相同的值。

任何人都可以告訴我哪裏出錯了嗎?

非常感謝。

+0

這應該是原樣。 '$ arr [$ var]'完全支持。 – deceze

+0

我不想從數組中獲取值,當索引等於數組中的值時,我試圖從$ _GET查詢中獲取值。 –

回答

1

它已經確實承認$鍵作爲一個變種,你的語法正確,你可以消除錯誤是這樣的:

檢查$ _GET數組的第一個這樣它$鍵:

if array_key_exists($key, $_GET) { 
    echo $_GET[$key]; 
} 
0

錯誤告訴你,$ anArray中的值不在$ _GET中作爲索引存在。

例如,

http://someserver/somepage.php?var1=this&var2=that 

將導致$ _GET一樣:

array(
    'var1' => 'this', 
    'var2' => 'that' 
) 

所以,如果$ anArray是這樣的:

array('var1','var2','var3'); 

你的循環將工作的優良var1 and var2 ,但是當它到達var3它會發出未定義索引錯誤。如果您不知道$ anArray中的所有元素是否將存在於$ _GET中,並且您只是希望抑制錯誤通知,那麼通常的方法是將您的執行塊封裝在isset()中。包裝:

foreach ($anArray as $key) { 
    if (isset($_GET[$key])) { 
    echo $_GET[$key]; 
    } 
} 

或者使用@HappyMary建議的array_key_exists()。