【问题标题】:Explode string into foreach将字符串分解为 foreach
【发布时间】:2014-02-17 16:20:43
【问题描述】:

我有以下 GET 参数: ?data=prop_123&data=prop_124&data=prop_125&data=prop_126&data=prop_129&data=prop_127

我想知道是否有人知道将每个值放入 foreach 的快速方法?谢谢!

【问题讨论】:

    标签: php foreach


    【解决方案1】:

    这不起作用,因为您的所有参数都具有相同的名称,因此只有值“prop_127”将被传递给您的脚本。您可以将其创建为数组,如下所示:

    ?data[]=prop_123&data[]=prop_124&data[]=prop_125&data[]=prop_126&data[]=prop_129&data[]=prop_127
    

    然后您可以使用foreach() 像这样循环它们:

    foreach ( $_GET['data'] as $data ) {
        // This loops once for each instance of data[] in your URL
    }
    

    如果您无法控制 URL,则必须使用 $_SERVER['QUERY_STRING'] 手动读取它,然后对其进行解析以提取值。

    【讨论】:

      【解决方案2】:

      每个data 将覆盖$_GETparse_str 中的前一个,所以可能是这样的:

      $s = 'data=prop_123&data=prop_124&data=prop_125&data=prop_126&data=prop_129&data=prop_127';
      $s = str_replace('=', '[]=', $s);
      parse_str($s, $a);
      
      foreach($a as $something) { }
      

      如果您实际上是在尝试将变量放入 GET 请求中并且可以从 $_GET 获取它们,则在查询字符串中使用 data[] 形式,然后在 $_GET 上使用 foreach

      【讨论】:

        【解决方案3】:

        可以使用PHP函数:parse_str

        http://www.php.net/manual/en/function.parse-str.php

        【讨论】:

        • parse_str() 将只返回最后一个值,就像 $_GET 一样,因为它们都共享相同的名称。
        • 你说得对,我在写完答案后才注意到这个问题:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-28
        • 2010-11-20
        • 2020-09-15
        • 2015-01-27
        • 1970-01-01
        相关资源
        最近更新 更多