我的请求URL中有一个参数值数组(带有匹配的参数名称),如下所示:
? my_array_of_values =第一个和 my_array_of_values =第二个
在Java servlet中,我可以检测到它们like this:
ServletRequest request = ...;
String[] myArrayOfValues = request.getParameterValues("my_array_of_values");
这将导致:
myArrayOfValues [0] =“第一”;
myArrayOfValues 1 =“第二”;
...这就是我想要的。
但是,我不确定如何在PHP中获得相同的结果。对于相同的参数(当我尝试时):
print_r($_GET);
它导致
Array([my_array_of_values] => Second
...即“第一个”参数丢失。
我知道为什么会发生这种情况,但是有没有办法像在Java / servlet中那样检测PHP中的这种参数值数组?如果没有,是否有建议的解决方法或替代方法?
答案 0 :(得分:2)
我不知道Java环境中会发生什么奇怪的魔术,但是查询参数必须具有不同的名称,否则它们将相互覆盖。
在?my_array_of_values=First&my_array_of_values=Second
的示例中,仅返回最后一个给定值。就像将一个不同的值一个接一个地分配给相同的变量一样。
不过,您可以通过在参数名称后使用尖括号将单个参数检索为数组:
?my_array_of_values[]=First&my_array_of_values[]=Second
在这种情况下,$_GET['my_array_of_values']
将是具有所有给定值的数组。
另请参阅:Authoritative position of duplicate HTTP GET query keys