不能使用$ _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 +堆栈溢出和谷歌搜索,但我无法解决我的问题。
$ _GET是一个联合阵列,以循环它:
foreach($_GET as $key=>$value) {
....
}
万一你万t只能使用数值数组中的值,您可以使用:
$myData = array_values($_GET);
// here you have a numeric array containing the $_GET values
echo $myData[0];
有人可以解释倒票吗?问题很简单,这不是一个好主意,或者你为什么要这样做。只是“如何转移它”。 – 2013-02-16 17:08:15
是的,你不能。这就是它的工作原理。
没有这样的索引。
尽管您不需要数字索引,但必须使用关联密钥。
有2个原因,你不应该翻译您$ _GET到枚举列表:
- 参数顺序不能保证。你有使用字段名称,而不是位置。
- 这只是无用的浪费CPU。你想从你的枚举数组中获得的所有东西,你可以从原始的$ _GET中获得。例如,使用
foreach()
来迭代它。
如果你仍然不知道如何正确处理$ _GET - 问这个问题,你会得到正确的答案。
@你的常识所以,你可以请指导我如何将我的$ _GET传递给自定义数组如果我的$ _GET计数变化,所以我认为用我的自定义数组我可以使用数字索引。 BR。 – 2013-02-16 16:57:40
我不想在此页上的任何位置投票;-) – 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];
无需循环,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)));
关联数组;只读。 – SparKot 2013-02-16 16:56:32
然后有人通过'http://localhost/sayfa.php?rd_sayfa = yazilar&rd_dil =土耳其语&...'(交换第一个和第二个参数)访问您的网站,一切都崩溃。 – DCoder 2013-02-16 17:00:24
@DoSparKot只读,它应该是,但你可以用它做任何你想要的 – 2013-02-16 17:00:41