1

我知道这听起来像是一个非常明显的问题,但是我一直在努力寻找正确的答案,但我无法找到它。请放轻松,我是 php 的初学者。

这是我从购物篮发送的代码:

// Build the query string
$queryString  = "?cmd=_cart";
$queryString .= "&upload=1";
$queryString .= "&charset=utf-8";
$queryString .= "&currency_code=" . urlencode($config['currencyCode']);

foreach ($jcart->get_contents() as $item) {

    $queryString .= '&Description' .  '=' . urlencode($item['name']);
    $queryString .= '&Amount' .  '=' . urlencode($item['price']);
    $queryString .= '&Shipping' .  '=' . urlencode($item['del']);           

这将输出一个类似的网址:

http://www.mysite.php?cmd=_cart&upload=1&charset=utf-8¤cy_code=GBP&Description=item1&Amount=419.00&Shipping=0.00&Description=Item2&Amount=354.00&Shipping=0.00

如果echo $Description我得到:Item2

我想得到:

Item1, Item 2

我怎样才能做到这一点?

欢迎任何帮助。

4

3 回答 3

0

使用相同的名称是不可能的。第二个Description总是会覆盖第一个。

只需调用第二个Description2,或者一个可以描述它存储的描述值的名称

于 2013-09-20T13:41:43.407 回答
0

您所做的与以下内容相同:

 $value = 1;
 $value =2;

当你:

 echo $value;

你显然会得到值 2,我相信你知道为什么。这是因为您在 url 中有 2 个描述。所以一个变量会覆盖另一个变量。而是将该数据放在一个数组中,将其转换为 JSON(不确定是否可以直接对其进行 urlencode),然后进行 urlencode 发送。

并在另一边解码。

我的意思是“找到工作”

编辑: 我会发送一组 urlencoded JSON 对象(我从未尝试对数组进行 urlencode,这就是我在我的情况下使用 JSON 的原因)。但是你正在做的问题是 url 最终会太长。你只有2个项目,我想知道你会有多少。

于 2013-09-20T13:44:23.580 回答
0

尝试使用此功能:

function vars2url($array, $parent = ''){
    $params = array();
    foreach($array as $k => $v){
        if(is_array($v))
            $params[] = vars2url($v, (empty($parent) ? urlencode($k) : $parent . '[' . urlencode($k) . ']'));
        else
            $params[] = (!empty($parent) ? $parent . '[' . urlencode($k) . ']' : urlencode($k)) . '=' . urlencode($v);
    }
    return implode('&', $params);
}

示例用法:

$params = array(
    'cmd' => '_cart',
    'upload' => 1,
    'charset' => 'utf-8',
    'currency_code' => $config['currencyCode'],
    'Description' => array('Item1', 'Item2'));
echo vars2url($params);

结果:

cmd=_cart&upload=1&charset=utf-8&cy_code=&Description[0]=Item1&Description[1]=Item2

于 2013-09-20T13:50:32.483 回答