PHP在不使用循环的情况下从多维数组创建查询字符串

时间:2013-01-10 08:41:48

标签: php arrays query-string

我有一个多维数组。像这样。

Array
(
    [38] => Array
        (
            [quantity] => 1
            [price] => 149
            [product_code] => 4578425
        )

    [39] => Array
        (
            [quantity] => 2
            [price] => 300
            [product_code] => 4578426 
        )

)

我想从这些值创建查询字符串,如

https://www.domain.com/checkout.php?PRODS=4578425,4578426&QTY=1,2&CART=1

3 个答案:

答案 0 :(得分:1)

不使用循环......

我认为AFAIK是不可能的,因为你有阵列中的数组,所以使用implode无济于事。但是,使用循环,是的。

使用此代码:

$prods = array();
$qty = array();
foreach ($array as $item)
{
    $prods[] = $item["product_code"];
    $qty[] = $item["quantity"];
}
echo 'https://www.domain.com/checkout.php?PRODS=', implode(',', $prods),'&QTY=', implode(',', $qty),'&CART=1';

答案 1 :(得分:0)

您可以使用implode()方法

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
echo $comma_separated; // lastname,email,phone

答案 2 :(得分:0)

是的,我认为有办法,

您可以使用序列化将其放入字符串中,然后反序列化以将其恢复为如下数组:

<?php

 $arr = Array
(
38 => Array
    (
        'quantity' => 1,
        'price' => 149,
        'product_code' => 4578425
    ),

39 => Array
    (
        'quantity' => 2,
        'price' => 300,
        'product_code' => 4578426 
    )

);


$newarr = 'https://www.domain.com/checkout.php?string=';
$newarr .= serialize($arr);

?>

然后你有这个结果:

https://www.domain.com/checkout.php?string=a:2:{I:38;一个:3:{S:8: “量”; I:1; S:5: “价格”; I:149; S:12: “PRODUCT_CODE” ; I:4578425;} I:39; A:3:{S:8: “量”; I:2; S:5: “价格”; I:300; S:12: “PRODUCT_CODE”; I:4578426 ;}}一个:2:{I:38;一个:3:{S:8: “量”; I:1; S:5: “价格”; I:149; S:12: “PRODUCT_CODE” 我:4578425;} I:39; A:3:{S:8: “量”; I:2; S:5: “价格”; I:300; S:12: “PRODUCT_CODE”; I:4578426;} }

没有循环,但它不漂亮!!!

如果您想使用此内部网址,我必须提醒您。 url get方法仅用于id或其他键值之类的简短信息。如果您的网址超过2000个字符,大多数网络服务器都会遇到问题。不确定这是不是你的意图。