我正在使用http_build_query
构建$ _POST查询,但我需要为一个密钥传输多个值。该问题涉及United States Naval Observatory
Flagstaff Station中的HTML表单。在Catalogue Lists
部分中,您可以选择要显示的多个值。
提交请求后,您将获得搜索参数的概述。简短摘录显示多个值指的是同一个键。
...
colbits = cb_id
colbits = cb_ra
...
colbits = cb_mag
...
问题是我没有机会在PHP中为同一个密钥传输多个值。如果我按照以下方式执行,则密钥的值将被覆盖。
$url = 'http://www.nofs.navy.mil/cgi-bin/tfch4.test.cgi';
$data = array('colbits' => 'cb_id', 'colbits' => 'cb_ra', 'colbits' => 'cb_mag');
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
这有什么解决方法吗?我已经尝试将不同的值作为关键字“colbits”的数组发送,但这并没有按预期工作。
答案 0 :(得分:0)
如果你想在$ _POST中获得一个名为'colbits'的数组:
$_POST['colbits'] == ['cb_id','cb_ra','cb_mag']
正确的方法是在'colbits'定义之后放一对方括号,喜欢这样:
$data = array('colbits[]' => 'cb_id', 'colbits[]' => 'cb_ra', 'colbits[]' => 'cb_mag');
答案 1 :(得分:0)
通过http_build_query
将params附加到生成的查询字符串中就可以了。
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)."&colbits=cb_id&colbits=cb_altid&colbits=cb_ra&colbits=cb_mag",
),
);