一个$ _GET输入参数,它是一个Array

don*_*pal 2 php arrays get

我正在尝试将3个参数传递给脚本,其中第3个参数$_GET['value3']应该是一个数组

$_GET['value1'] 
$_GET['value2'] 
$_GET['value3'] //an array of items
Run Code Online (Sandbox Code Playgroud)

我正在调用这样的脚本:(注意我的语法value3,我不确定它是否正确)

http://localhost/test.php?value1=test1&value2=test2&value3=[the, array, values]
Run Code Online (Sandbox Code Playgroud)

然后我使用foreach希望循环遍历第三个参数value3,即数组

//process the first input $_GET['value1']

//process the second input $_GET['value2']

//process the third input $_GET['value3'] which is the array
foreach($_GET['value3'] as $arrayitem){
    echo $arrayitem; 
}
Run Code Online (Sandbox Code Playgroud)

但我得到了错误 Invalid argument supplied for foreach()

我不确定我的方法是否正确.有些人可以澄清你是如何去做那种事情的

Jar*_*uba 7

尝试

http://localhost/test.php?value1=test1&value2=test2&value3[]=the&value3[]=array&value3[]=values
Run Code Online (Sandbox Code Playgroud)


Tom*_*lak 7

没有"将数组作为URL参数传递"(或表单值,因为这是相同的事情).这些是字符串,除此之外发生的任何事情都是构建到应用程序服务器中的魔法,因此它是不可移植的.

PHP恰好支持为您&value3[]=the&value3[]=array&value3[]=values自动创建$_GET['value3']数组的符号,但这对PHP来说很特殊,并不一定适用于其他地方.

您也可以直截了当地获取更清晰的URL,如下所示:value3=the,array,values然后explode(',', $_GET['value3'])在PHP脚本中使用以创建数组.当然,这意味着您的分隔符char不能是值的一部分.

要通过HTTP明确地传输结构化数据,请使用为此目的而制作的格式(即:JSON),然后json_decode()在PHP端使用.

  • 我认为在使用该语言进行开发时依赖语言功能并不是太糟糕,大声笑.. (2认同)