1

我不知道如何使它工作。我想从 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->addItem(array从 URL 制作这样的数组(=api request)?$api­‐>addItem(array可以多次使用。

4

6 回答 6

3

编辑:感谢 dqhendricks 和 Rocket 指出您可以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));
于 2012-05-11T19:53:20.707 回答
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]
    ));
}
于 2012-05-11T19:59:25.383 回答
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

于 2012-05-11T20:01:08.293 回答
0
sample.php?name[]=Product1&name[]=Product2

然后在你的 PHP 中,你可以看到:

print_r($_GET['name']);
于 2012-05-11T19:52:31.253 回答
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);
于 2012-05-11T19:55:31.210 回答
0

就像 dqhendricks 建议的那样,仅使用原始获取然后将它们附加到数组中是否不值得。我假设您将始终知道 URL 中的内容

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

等等...

于 2012-09-18T08:59:34.740 回答