【问题标题】:Can't use $_GET as a numerical indexed array不能将 $_GET 用作数字索引数组
【发布时间】:2013-02-16 16:54:07
【问题描述】:

我正处于原型阶段。我在 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 + stack overflow 并用谷歌搜索,但我无法解决我的问题。

【问题讨论】:

  • 关联数组;只读。
  • 然后有人通过http://localhost/sayfa.php?rd_sayfa=yazilar&rd_dil=turkish&...(交换第一个和第二个参数)访问您的网站,一切都崩溃了。
  • @DoSparKot 只读,应该是,但你可以随心所欲地使用它
  • @axel.michel 我刚刚发现&我很困惑。 :-O

标签: php arrays get indexing numeric


【解决方案1】:

$_GET 是一个关联数组,循环遍历它:

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

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

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

【讨论】:

  • 有人可以解释一下否决票吗?问题很简单,这不是一个好主意,或者你为什么要这样做。只是关于“如何转移它”。
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

    $indexed = array_values($_GET);
    $first = $indexed[0];
    
    $keys = array_keys($_GET);
    $first = $_GET[$keys[0]];
    
    $first = current(array_slice(array('foo'), 0, 1)));
    

    【讨论】:

      【解决方案4】:

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

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

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

      • 不保证参数顺序。您必须使用字段名称而不是职位。
      • 这只是对 CPU 的无用浪费。你想从你的枚举数组中得到的一切,你都可以从原始的 $_GET 中得到。例如,使用foreach() 对其进行迭代。

      如果您仍然不知道如何正确处理 $_GET - 请提出这个问题,您将得到正确的答案。

      【讨论】:

      • @Your Common Sense 所以你能指导我如何将我的 $_GET 传递给自定义数组,如果我的 $_GET 计数不同,所以我认为我的自定义数组可以使用数字索引。 BR。
      猜你喜欢
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 2014-07-18
      相关资源
      最近更新 更多