我有一个数组anArray,我循环遍历它,像这样:
foreach ($anArray as $key) {
echo $_GET[$key];
}
我得到很多错误,说:
未定义索引:$key
这是真的,但我不知道如何让我的PHP识别$key是一个变量,而不仅仅是一个字符串。
如果我打印出$_GET $key => $value对的列表和$anArray的列表,它们至少包含一些相同的值。
谁能告诉我我哪里错了?多谢。
它已经将$key识别为var,您的语法是正确的,您可以通过以下方式消除错误:
先检查$_GET数组中是否有$key:
if array_key_exists($key, $_GET) {
echo $_GET[$key];
}
错误告诉您,$anArray中的值在$_GET中不作为索引存在。
例如
http://someserver/somepage.php?var1=this&var2=that
将导致类似于
的$_GET:array(
'var1' => 'this',
'var2' => 'that'
)
如果$anArray是这样的
array('var1','var2','var3');
对于var1和var2,你的循环可以正常工作,但是当它到达var3时,它会发出undefined index错误。
如果你不知道$anArray中的所有元素是否都将存在于$_GET中,并且你只是希望抑制错误通知,通常的方法是将执行块包装在isset()中;包装:
foreach ($anArray as $key) {
if (isset($_GET[$key])) {
echo $_GET[$key];
}
}
或者使用@HappyMary建议的array_key_exists()