我正在创建一个购物车。仅限会话变量。我想要一些简单的东西,没有数据库,它只适用于初始系统(后来可能使用数据库和登录)
我单击一个产品并使用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
有人可以告诉我,我怎么只出现一次“水果”。我如何比较已经重复了?
我想要的示例: 水果 橙子 苹果 香蕉
答案 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