如何正确打印并比较$ SESSION?

时间:2013-06-18 15:52:52

标签: php session e-commerce cart

我正在创建一个购物车。仅限会话变量。我想要一些简单的东西,没有数据库,它只适用于初始系统(后来可能使用数据库和登录)

我单击一个产品并使用URL添加SESSION变量

为例 产品:橙色

已发送网址

site.com/?page=buy&add=Orange&type=fruit

则...

session_start();

//Create 'cart' if it doesn't already exist
if (!isset($_SESSION['SHOPPING_CART'])){ $_SESSION['SHOPPING_CART'] = array(); }

if (isset($_GET['add'])){
//Adding an Item
//Store it in a Array
$ITEM = array(
    //Item name     
    'name' => $_GET['add'],
    'type' => $_GET['tipo'],

    //Item Price

    );

对于打印,我使用:

 foreach ($_SESSION['SHOPPING_CART'] as $itemNumber => $item) {
 echo $item['type']; 
 echo $item['name']; 

}

但我的问题是,当我打印时,我看到这样的事情: 水果橙 水果苹果 Fruir Banana

有人可以告诉我,我怎么只出现一次“水果”。我如何比较已经重复了?

我想要的示例: 水果   橙子   苹果   香蕉

3 个答案:

答案 0 :(得分:0)

   $itemType = ""; 
   foreach ($_SESSION['SHOPPING_CART'] as $itemNumber => $item) {
     if($itemType == $item['type']) {
       // skip...don't print again
     } else { 
        echo $item['type']; 
     }
     echo $item['name']; 
     $itemType = $item['type'];
    }

答案 1 :(得分:0)

您需要在购物车中添加其他级别,例如

$_SESSION['SHOPPING_CART'][$_GET['tipo']][$_GET['add']]

所以你最终会得到一个嵌套的数组结构:

 SHOPPING_CART -> fruit -> orange
               -> fruit -> apple
               -> vegetable -> pizza

答案 2 :(得分:0)

$itemType = ""; 
foreach ($_SESSION['SHOPPING_CART'] as $itemNumber => $item) {
 if($itemType == $item['type']) {
   // skip...don't print again
 } else { 
    echo $item['type']; 
 }
 echo $item['name']; 
 $itemType = $item['type'];
}

大!

然而,如果我有问题。如果我加入水果,然后加入食物,再加入水果:

Print:
   Fruit:
      Banana
      Banana
   Food:
      Meat x
   Fruit:
      Apple

然而,有可能不重复“香蕉”香蕉?

Print:
   Fruit:
      Banana
      Apple
   Food:
      Meat x