簡體   English   中英

如何正確打印並比較$ SESSION?

[英]How Can I print correctly and compare $SESSION?

我正在創建一個購物車。 僅具有會話變量。 我想要簡單的東西,沒有數據庫,僅用於初始系統(以后可能使用數據庫和登錄名)

我單擊產品並使用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香蕉

有人可以告訴我如何只出現一次“水果”。 我如何比較已經是重復的?

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

   $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'];
    }

您需要向購物車添加另一個級別,例如

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

因此,您最終將獲得嵌套的數組結構:

 SHOPPING_CART -> fruit -> orange
               -> fruit -> apple
               -> vegetable -> pizza
$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM