我知道这听起来像一个非常明显的问题,但我一直试图找到正确的答案,我无法找到它。 请放轻松我是php的初学者。
这是我从我的购物篮中发送的代码:
// Build the query string
$queryString = "?cmd=_cart";
$queryString .= "&upload=1";
$queryString .= "&charset=utf-8";
$queryString .= "¤cy_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']);
这会输出一个类似的网址:
如果我echo $Description
我得到:Item2
我想得到:
Item1, Item 2
我怎样才能做到这一点?
欢迎任何帮助。
答案 0 :(得分:0)
使用相同的名称无法做到这一点。第二个Description
将始终覆盖第一个。{/ p>
只需拨打第二个Description2
或一个描述其存储描述值的名称
答案 1 :(得分:0)
你做的和以下一样:
$value = 1;
$value =2;
当你:
echo $value;
你显然会得到值2,我相信你知道为什么。这是因为您在网址中有2个描述。所以一个变量超越了另一个变量。而是将数据放入数组中,将其转换为JSON(不确定是否可以直接对其进行urlencode),urlencode将其发送到。
然后解码另一方。
我的观点是“找个工作”
修改强> 我会发送一个urlencoded JSON对象数组(我从来没有试过urlencode一个数组,这就是为什么我会在我的情况下使用JSON)。但你正在做的问题是网址最终会太长。你只有2件物品,我想知道你会有多少物品。
答案 2 :(得分: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&安培;上传= 1&安培;字符集= UTF-8和; cy_code =安培;描述[0] = ITEM1和安培;描述[1] =项目2