是否有与Java的ServletRequest.getParameterValues()等效的PHP?

时间:2018-06-20 10:57:13

标签: php

我的请求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中的这种参数值数组?如果没有,是否有建议的解决方法或替代方法?

1 个答案:

答案 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