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(arrayURLからこのような配列(=api request)を作る方法はありますか? $api­‐>addItem(array複数回使用できます。

4

6 に答える 6

3

編集:同じことを行うために使用できることを指摘してくれたdqhendricksとRo​​cketに感謝します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 が示唆したように、生の get を使用して配列に追加するだけではお金がかかりません。URLに何が含まれるかを常に知っていると仮定しています

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

等々...

于 2012-09-18T08:59:34.740 に答える