我正在创建一个购物车。仅使用会话变量。我想要一些简单的东西,没有数据库,它仅用于初始系统(以后可能使用数据库和登录名(
我点击产品并使用 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'];
}
但我的问题是,当我打印时,我看到这样的东西:水果橙水果苹果弗鲁尔香蕉
有人可以告诉我我怎么只出现一次"水果"。我如何比较已经重复了?
我想要的例子:水果 橙 苹果 香蕉
$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