我试图理解为什么,在我的页面上有一个查询字符串, 代码:
echo "Item count = " . count($_GET);
echo "First item = " . $_GET[0];
结果:
项目数= 3 第一项=
PHP关联数组是否与数字数组不同,因此索引无法访问它们的项目?谢谢 -
答案 0 :(得分:5)
他们不能。当您通过键/索引下标值时,它必须完全匹配。
如果您真的想使用数字键,可以在$_GET
上使用array_values()
,但是您将丢失有关键的所有信息。您还可以使用array_keys()
来获取带有数字索引的键。
或者,正如Phil提到的那样,您可以reset()
获取第一个内部指针。您还可以使用end()
获取最后一个。您也可以使用array_pop()
和array_shift()
进行弹出或移位,两者都会在修改数组后返回值。
答案 1 :(得分:3)
是的,数组元素的键是整数(不能以0开头)或关联键,而不是两者。
您可以使用以下循环访问项目:
foreach ($_GET as $key => $value) {
}
或者使用array_values()
函数将键值作为数字数组从键0开始,或者使用reset()
获取第一个值。
答案 2 :(得分:2)
你可以这样做:
$keys = array_keys($_GET);
echo "First item = " . $_GET[$keys[0]];
答案 3 :(得分:0)
不,这是不可能的。
试试这个:
file.php?foo=bar
file.php
内容:
<?php
print_r($_GET);
?>
你得到了
Array
(
[foo] => bar
)
如果要在0处访问元素,请尝试file.php?0=foobar
。
您还可以使用foreach
或for
循环,只需在第一个元素(或您想碰到的任何元素)之后中断:
foreach($_GET as $value){
echo($value);
break;
}
答案 4 :(得分:0)
不 - 它们由键值对映射。您可以将它们的KV对迭代到索引数组中:
foreach($_GET as $key => $value) {
$getArray[] = $value;
}
您现在可以通过$ getArray中的索引访问值。
答案 5 :(得分:0)
作为另一种奇怪的解决方法,您可以使用以下方法访问第一个元素:
print $_GET[key($_GET)];
利用内部数组指针,如reset / end / current(),可能在each()
循环中有用。