Сегодня я работаю над корзиной покупок для сценария веб-сайта. Когда они добавляют элемент в корзину, он сохраняется в переменной $_SESSION
под названием cartitems
. Я храню массивы в массиве $_SESSION['cartitems']
, содержащие itemid
и количество предметов, которые они пытаются добавить в корзину. Просто добавление элементов работает потрясающе, используя приведенный ниже код, но мне нужно, чтобы они увеличивали значение элементов в массиве, предполагая, что они пытаются добавить больше одного и того же элемента вместо простого добавления нового массива в SESSION. Вот пример:Добавление элементов в массив, но если они существуют в массиве, увеличьте это значение
-> User 1 visits the website.
- Add 5 melons to cart.
- Add 3 lemons to cart.
- Add 2 more melons to cart.
Мой массив будет печатать что-то вроде:
array(
array{0 => 1, 1 => 5},
array{0 => 2, 1 => 3},
array{0 => 1, 1 => 2}
)
.. в то время как цель добавления их было бы что-то вместо того, чтобы, как в следующем:
array(
array{0 => 1, 1 => 7},
array{0 => 2, 1 => 3}
)
Так что значение на itemid 1 будет увеличено до 7. Я также должен знать, что его на, перед добавлением дополнительных 2, incas есть только 6 дынь на складе. Не хотел бы, чтобы кто-то нашел способ добавить больше дынь, а потом остался на биржевом поле, если бы мы!
Я уже передаю количество акций, вместе с погодой, оно имеет неограниченную поддержку по акциям или покупает лимиты на предмет, поэтому у меня есть вся информация, необходимая для ограничения материала (что я уже делаю при добавлении элементов) , просто нужен способ изменить массив, если его уже там, чтобы увеличить число. Вот код, я использую для добавления элементов:
if(isset($_POST['quantity'])) {
// Cast quantity to an int for protection
$quantity = (int) $_POST['quantity'];
if(!empty($quantity) && $quantity > 0) {
$errors = 0;
// It doesn't support unlimited stock so we check stock level
if($unlimstock == "0") {
if($quantity > $stock) {
$quantity = $stock;
}
if($buylimit > 0) {
if($quantity > $buylimit) {
$errors = "1";
}
}
}
if($errors == 0) {
$_SESSION['cartitems'][] = array($itemid, $quantity);
header("Location: cart.php");
die();
}
}
}
Каков наилучший подход, чтобы проверить, если он находится в массиве, если увеличить значение, если я не могу добавить его, как я уже, и если он есть, какова ценность, поэтому я знаю, насколько она может быть увеличена. Спасибо, парни!
Очень хорошее предложение! Я попробую это, спасибо. – Kaboom
В случае затруднений я добавил код для текущей '$ _SESSION'. Таким образом, вы можете сравнить, какой из них проще). –
. Второй вариант работает лучше, поскольку его проще реализовать с текущей структурой, и я не обязательно знаю все элементы в сеансе, поэтому потребуется сделать немного больше записи, чтобы сделать первый вариант работа, но второй вариант работает красиво. Просто нужно добавить мой чек сейчас, если он перейдет лимит на акции. – Kaboom