2012-05-11 35 views
1

我不知道如何使其工作。我想從URL使陣列:PHP中的數組的URL

index.php?address=someaddress&telephone=12345&customer=Customer Name&p_name[0]=ProductOne&p_name[1]=ProductTwo&p_price[0]=1&p_price[1]=10&p_name[2]... 

有一個API,它是這樣工作:

$api‐>addItem(array(
     'name' => 'ProductOne', 
     'price' => '123', 
    )); 

$api­‐>addItem(array(
     'name' => 'ProductTwo', 
     'price' => '32', 
    )); 

有沒有什麼辦法可以使從這樣的陣列(= API請求$api->addItem(array)網址是什麼? $api­‐>addItem(array可以多次使用。

+0

URL中是否真的有'$'?那些應該是'&'? –

+0

Awww,錯字!謝謝 – Adrian

+0

這個URL是一個字符串,還是你要去這個URL? –

回答

2

你有過的URL控制?如果是這樣,我會改變你如何發送你的價值觀。

相反的:

name1=ProductOne&price1=123&name2=ProductTwo&price2=32 

我會使用:

name[]=ProductOne&price[]=123&name[]=ProductTwo&price[]=32 

[]把他們變成數組,這意味着現在$_GET['name']是一個數組。那麼你可以在它上面foreach

foreach($_GET['name'] as $k=>$v){ 
    $api->addItem(array(
     'name' => $v, 
     'price' => $_GET['price'][$k] 
    )); 
} 
+0

是的,我完全可以控制URL。我認爲你的代碼是我真正需要的,我將嘗試它。 – Adrian

+0

給它一個鏡頭。 –

+0

嗯,我不能讓它工作http://bit.ly/KuQ4H8。所以唯一的辦法是parse_str&parse_url?問題在於,URL中會有其他元素,這些元素不在這個數組中。我更新了這個問題。 – Adrian

0
sample.php?name[]=Product1&name[]=Product2 

然後在你的PHP,你可以看到:

print_r($_GET['name']); 
3

編輯:感謝dqhendricks和火箭的指出你可以使用parse_str()做同樣的事情。

$q = parse_str(parse_url($url, PHP_URL_QUERY)); 

或者你可以使用這個(長路):

function parse_query($var) { 
    $var = parse_url($var, PHP_URL_QUERY); 
    $var = html_entity_decode($var); 
    $var = explode('&', $var); 
    $arr = array(); 

    foreach($var as $val) { 
    $x = explode('=', $val); 
    $arr[$x[0]] = $x[1]; 
    } 
    unset($val, $x, $var); 
    return $arr; 
} 

使用這樣的:如果我理解你的權利

$url = "http://someurl.com/click?z=26&a=761"; 
print_r(parse_query($url)); 
+4

我不能相信這得到了這麼多票。已經有原生的PHP代碼來爲你做這個...parse_str() – dqhendricks

+1

'$ q = parse_str(parse_url($ url,PHP_URL_QUERY));' –

0

我不知道,但如果你正在尋找將查詢字符串轉換爲數組,你可以使用pares_str函數。爲了得到只有從URL查詢字符串,你可以使用parse_url功能

$url = "sample.php?some_var=someval&s=4&bla=bla"; 
$url_parts = parse_url($url); 
$qs = $url_parts["query"]; 
$params = array(); 
parse_str($qs,$params); 
var_dump($params); 
1
// extract the query from the url string 
$url = parse_url('sample.php?name1=ProductOne&price1=123&name2=ProductTwo&price2=32', PHP_URL_QUERY); 
// process into array so that first element is a key, and second element is a value 
parse_str($url, $output_array); 
// now $output_array contains the query's variables. 

更大的問題是,爲什麼你要在這些變量已經包含在$_GET做到這一點?

0

就像dqhendricks建議的那樣,僅僅使用raw gets然後將它們追加到數組中就不會付出代價。我假設你總是會知道URL中會有什麼

$ array_of_gets = array(「address」=> $ _GET ['address'],「telephone」=> $ _GET ['telephone']);

等等......