2013-08-31 62 views
0

我想通过Curl将一些变量和一个数组(30个索引)传递到URL中。如何创建一个基于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建议,但也有只在所得到的URL 14个变量而我通过一个30索引数组。有人可以解释为什么吗?

+0

请出示'的var_dump($ an_array)的输出;'***和***提供您的阵列和调用'http_build_query'工作PHP的例子。 – hakre

+0

请添加您当前的代码 – hek2mgl

回答

0

使用http_build_query()。该功能能够与标量,数字阵列,甚至accociative阵列(在任何维度)的工作:

$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 
+0

我用它。它的工作。但它在url中只发送14个变量为什么。?我有20个索引阵列 – user2320325

+0

更新您的问题并添加您的代码。将需要它多说 – hek2mgl

0

您可以使用序列化($阵列);这会给你字符串格式化的数组内容发送它与该字符串上的url_encode(),然后将它追加到URL,因为你正在做它。在服务器端你可以反序列化(url_decode($ _GET ['c']));并恢复你的阵列。

希望这会帮助你。

0

$ _GET是有限的。我建议使用$ _POST代替。你也可以利用json_encode()和json_decode();

<?php 
    // site1 
$test = json_encode(array("hello" => "world")); 

// site2   
extract(json_decode($test, true)); 

echo $hello; 
?> 
相关问题