可以用数字方式(即通过索引)访问PHP关联数组中的项吗?

时间:2011-05-08 23:34:27

标签: php arrays

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

echo "Item count = " . count($_GET);
echo "First item = " . $_GET[0];

结果:

  

项目数= 3      第一项=

PHP关联数组是否与数字数组不同,因此索引无法访问它们的项目?谢谢 -

6 个答案:

答案 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

您还可以使用foreachfor循环,只需在第一个元素(或您想碰到的任何元素)之后中断:

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()循环中有用。