2014-03-25 56 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()。