2013-08-31 80 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; 
?> 
相關問題