我试图理解为什么在我的页面上有一个查询字符串,代码:
echo "Item count = " . count($_GET);
echo "First item = " . $_GET[0];
结果:
项目计数 = 3 第一项 =
PHP 关联数组是否不同于数字数组,以便索引无法访问它们的项目? 谢谢-
他们不能。按键/索引对值下标时,它必须完全匹配。
如果你真的想使用数字键,你可以在$_GET
上使用array_values()
,但你会丢失有关键的所有信息。您还可以使用 array_keys()
来获取带有数字索引的键。
或者,正如 Phil 提到的,您可以reset()
内部指针来获取第一个。您也可以通过end()
获得最后一个。你也可以用 array_pop()
和 array_shift()
弹出或移动,两者都会在数组修改后返回值。
是的,数组元素的键是整数(不得以 0 开头)或关联键,而不是两者。
您可以使用如下所示的循环访问这些项目:
foreach ($_GET as $key => $value) {
}
或者使用 array_values()
函数获取以键 0 开头的数字数组形式的值,或者使用 reset()
获取第一个值。
你可以这样做:
$keys = array_keys($_GET);
echo "First item = " . $_GET[$keys[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;
}
> 不,它们由键值对映射。不过,您可以将它们 KV 对迭代到索引数组中:
foreach($_GET as $key => $value) {
$getArray[] = $value;
}
现在,您可以在$getArray内按索引访问值。
作为另一个奇怪的解决方法,您可以使用以下方法访问第一个元素:
print $_GET[key($_GET)];
这利用了内部数组指针,如 reset/end/current(),在 each()
循环中可能很有用。