不能将$ _GET用作数字索引数组

时间:2013-02-16 16:54:08

标签: php arrays get indexing numeric

我处于原型阶段。我在page1.php中有一个链接,发送到下面的页面:

http://localhost/sayfa.php?rd_dil=turkish&rd_sayfa=yazilar&rd_yazar=ali_uysal&rd_baslik=kalem_ucu"

在此页面中echo $_GET['rd_dil']工作并显示turkish,但echo $ _GET [0]显示Notice : Undefined offset: 0

所以我想用数字方式(数字索引)使用$ _GET?我怎样才能实现这个目标?我读了php.net +堆栈溢出和googled但我无法解决我的问题。

4 个答案:

答案 0 :(得分:3)

$ _ GET是一个关联数组,用于遍历它:

foreach($_GET as $key=>$value) {
   ....
}

如果您只想要数值数组中的值,可以使用:

$myData = array_values($_GET);
// here you have a numeric array containing the $_GET values
echo $myData[0];

答案 1 :(得分:2)

由于$_GET是关联数组,因此您可以将值分配给新数组:

foreach($_GET as $key=>$val) {
   $_GET2[] = $val;
}

或者您可以按照axel.michel的建议使用array_values

$_GET2 = array_values($_GET);
echo $_GET2[0];

答案 2 :(得分:0)

你不能直接这样做。但是有一些解决方法:

$indexed = array_values($_GET);
$first = $indexed[0];

$keys = array_keys($_GET);
$first = $_GET[$keys[0]];

$first = current(array_slice(array('foo'), 0, 1)));

答案 3 :(得分:-1)

是的,你做不到。这就是它的工作原理。
没有这样的指数。

您不需要数字索引,但必须使用关联键。

有两个原因导致您不应将$ _GET转换为枚举列表:

  • 不保证参数顺序。 使用字段名称而不是位置。
  • 这只是无用的浪费CPU。你想要的枚举数组,你可以从原来的$ _GET得到。例如,使用foreach()进行迭代。

如果你仍然不知道如何正确处理$ _GET - 请问这个问题,你会得到正确答案。