PHP关联数组中的项目是否可以不以数字方式访问(即通过索引)


Can items in PHP associative arrays not be accessed numerically (i.e. by index)?

我试图理解为什么在我的页面上有一个查询字符串,代码:

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

你也可以使用foreachfor循环,简单地在第一个元素(或任何你想要到达的元素)之后中断:

foreach($_GET as $value){
    echo($value);
    break;
}

> 不,它们由键值对映射。不过,您可以将它们 KV 对迭代到索引数组中:

foreach($_GET as $key => $value) {
    $getArray[] = $value;
} 

现在,您可以在$getArray内按索引访问值。

作为另一个奇怪的解决方法,您可以使用以下方法访问第一个元素:

 print $_GET[key($_GET)];

这利用了内部数组指针,如 reset/end/current(),在 each() 循环中可能很有用。