1

ショッピングカートを作っています。セッション変数のみ。私は単純なものが欲しいのですが、データベースはありません。それは初期システム専用です(後でデータベースとログインを使用する可能性があります)

製品をクリックし、URL を使用して SESSION 変数に追加します

商品例:オレンジ

送信済み URL

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

}

しかし、私の問題は、印刷すると次のように表示されることです: Fruit Orange Fruit Apple Fruir Banana

誰かが「フルーツ」を一度だけ表示する方法を教えてください。すでに繰り返されている比較を行うにはどうすればよいですか?

欲しい例: フルーツ オレンジ アップル バナナ

4

3 に答える 3

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
于 2013-06-21T13:53:11.107 に答える
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'];
    }
于 2013-06-18T15:58:14.920 に答える
0

カートに別のレベルを追加する必要があります。

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

したがって、ネストされた配列構造になってしまいます。

 SHOPPING_CART -> fruit -> orange
               -> fruit -> apple
               -> vegetable -> pizza
于 2013-06-18T15:58:15.737 に答える