【发布时间】: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 的快速方法?谢谢!
【问题讨论】:
我有以下 GET 参数: ?data=prop_123&data=prop_124&data=prop_125&data=prop_126&data=prop_129&data=prop_127
我想知道是否有人知道将每个值放入 foreach 的快速方法?谢谢!
【问题讨论】:
这不起作用,因为您的所有参数都具有相同的名称,因此只有值“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'] 手动读取它,然后对其进行解析以提取值。
【讨论】:
每个data 将覆盖$_GET 或parse_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。
【讨论】:
可以使用PHP函数:parse_str
【讨论】:
parse_str() 将只返回最后一个值,就像 $_GET 一样,因为它们都共享相同的名称。