如何基于具有30个值的数组创建URL

时间:2013-08-31 08:49:09

标签: php curl get

我想使用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个变量。任何人都可以解释原因吗?

3 个答案:

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