しばらく前に、基本的なショッピング カートを含むシステムを作成しました。カートは非常に単純な OOP システムで、一度に 1 つの数量ずつアイテムを追加します。カートにアイテムを追加する関数は次のとおりです。
function add_item($itemid,$qty=1,$price = FALSE, $info = FALSE)
{
if($this->itemqtys[$itemid] > 0)
{ // the item is already in the cart..
// so we'll just increase the quantity
$this->itemqtys[$itemid] = $qty + $this->itemqtys[$itemid];
$this->_update_total();
} else {
$this->items[]=$itemid;
$this->itemqtys[$itemid] = $qty;
$this->itemprices[$itemid] = $price;
$this->iteminfo[$itemid] = $info;
}
$this->_update_total();
}
これに関する問題は、一部の製品にバリエーション (サイズ、色など) があるが、同じ注文で別のバリエーションを選択した場合、製品が正しく追加されないことです。同じ製品のすべてが 1 つのバリエーションに分類されます。
多次元配列、または配列内の配列を使用して、次のようなものを生成するのはアイデアだと思いました。
$this->iteminfo[$itemid][$var];
製品から変数を取得することは問題ではありません。製品をそのバリエーションとともにカートに追加する方法に苦労し、バリエーションが再度追加されたときにのみ、この製品とバリエーションの組み合わせの数量を更新するだけです。別のバリエーションが追加された場合、カートの新しいエントリに製品が追加されますか?
これが理にかなっていることを願っています:/ありがとう