PHP购物车中的多个项目

Nic*_*ens 2 php shopping-cart frequency

我正在用PHP制作购物车.要检查用户是否选择了多个产品,我将所有内容都放在一个数组中($ contents).当我输出它时,我得到类似"14,14,14,11,10"的东西.我想要像"3 x 14,1 x 11,1 x 10"这样的东西.最简单的方法是什么?我真的不知道怎么做.

这是我的代码中最重要的部分.

    $_SESSION["cart"] = $cart;

    if ( $cart ) {
        $items = explode(',', $cart);
        $contents = array();
        $i = 0;
        foreach ( $items as $item ) {
            $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
            $i++;
        }

        $smarty->assign("amount",$i);


        echo '<pre>';
        print_r($contents);
        echo '</pre>';
Run Code Online (Sandbox Code Playgroud)

提前致谢.

tim*_*dev 5

为什么不建立更强大的购物车实施?

考虑从这样的数据结构开始:

$cart = array(
  'lines'=>array(
     array('product_id'=>14,'qty'=>2),
     array('product_id'=>25,'qty'=>1)
   )
);
Run Code Online (Sandbox Code Playgroud)

或类似的.

然后,您可以创建一组在购物车结构上运行的功能:

function addToCart($cart, $product_id, $qty){
   foreach($cart['lines'] as $line){
     if ($line['product_id'] === $product_id){
       $line['qty']  += $qty;
       return;
     }
   }
   $cart['lines'][] = array('product_id'=>product_id, 'qty'=>$qty);
   return;
}
Run Code Online (Sandbox Code Playgroud)

当然,您可以(也许应该)进一步将这个数据结构和函数组合成一组类.购物车是以面向对象的方式开始发挥作用的好地方.