不能使用$ _GET作为数字索引数组

问题描述:

我处于原型阶段。我在那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但回声$ _GET [0]显示Notice : Undefined offset: 0

,所以我想工作$ _GET以数字方式(数字索引)?我怎样才能达到这个目标?我读了php.net +堆栈溢出和谷歌搜索,但我无法解决我的问题。

+1

关联数组;只读。 – SparKot 2013-02-16 16:56:32

+0

然后有人通过'http://localhost/sayfa.php?rd_sayfa = yazilar&rd_dil =土耳其语&...'(交换第一个和第二个参数)访问您的网站,一切都崩溃。 – DCoder 2013-02-16 17:00:24

+1

@DoSparKot只读,它应该是,但你可以用它做任何你想要的 – 2013-02-16 17:00:41

$ _GET是一个联合阵列,以循环它:

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

万一你万t只能使用数值数组中的值,您可以使用:

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

有人可以解释倒票吗?问题很简单,这不是一个好主意,或者你为什么要这样做。只是“如何转移它”。 – 2013-02-16 17:08:15

是的,你不能。这就是它的工作原理。
没有这样的索引。

尽管您不需要数字索引,但必须使用关联密钥。

有2个原因,你不应该翻译您$ _GET到枚举列表:

  • 参数顺序不能保证。你使用字段名称,而不是位置。
  • 这只是无用的浪费CPU。你想从你的枚举数组中获得的所有东西,你可以从原始的$ _GET中获得。例如,使用foreach()来迭代它。

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

+0

@你的常识所以,你可以请指导我如何将我的$ _GET传递给自定义数组如果我的$ _GET计数变化,所以我认为用我的自定义数组我可以使用数字索引。 BR。 – 2013-02-16 16:57:40

+0

我不想在此页上的任何位置投票;-) – SparKot 2013-02-16 16:58:15

由于$_GET是一个关联数组,你可以将值赋给一个新的数组:

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

或者你可以使用array_values通过axel.michel的建议:

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

无需循环,array_values会执行此操作。 – 2013-02-16 16:58:13

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

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

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

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