我想使用Curl将一些变量和一个数组(带有30个索引)传递给URL。
要在另一个站点上获取所有变量和数组。
$an_array=array('c1_key'=>c1_value,'c2_key'=>c3_value,...........'c30_key'=>c30_value);
'http://domain.com?a=1&b=2&c=an_array'
任何人都可以告诉我该怎么做。
更新:
我使用http_build_query()
作为@ hek2mgl建议但是在我传递30索引数组时,结果url中只有14个变量。任何人都可以解释原因吗?
答案 0 :(得分:0)
使用http_build_query()
。该函数能够使用标量,数值数组甚至协同数组(在任何维度上):
$query = array(
'user' => 'hek2mgl',
'actions' => array('foo', 'bar'),
'description' => array(
'hobby' => 'hacking',
'likesPHP' => 'yes and no'
)
);
$url = 'http://www.yourserver.com/script.php?';
$url .= http_build_query($query);
echo $url;
输出:
http://www.yourserver.com/script.php?user=hek2mgl&actions%5B0%5D=foo&actions%5B1%5D=bar&description%5Bhobby%5D=hacking&description%5BlikesPHP%5D=yes+and+no
答案 1 :(得分:0)
你可以使用serialize($ array);它将为您提供字符串格式的数组内容,并在该字符串上使用url_encode()发送它,然后在您执行此操作时将其附加到url上。在服务器端你可以反序列化(url_decode($ _GET ['c']));并让你的阵列回来。
希望这会对你有所帮助。
答案 2 :(得分:0)
$ _ GET是有限的。我建议改用$ _POST。您还可以利用json_encode()和json_decode();
<?php
// site1
$test = json_encode(array("hello" => "world"));
// site2
extract(json_decode($test, true));
echo $hello;
?>