#php #arrays #session
#php #массивы #сеанс
Вопрос:
В настоящее время я могу установить и сохранить название и цену выбранного продукта в моем сеансовом массиве. Мне нужно расшириться так, чтобы я мог сохранить даже количество и идентификатор. Я не знаю, как сохранить больше значений в одном и том же массиве, чтобы, если возможно, ключ был идентификатором? Во-вторых, мне нужно было бы проверить, нажимает ли пользователь снова, а затем просто добавляет количество, а остальная информация остается прежней?
$id = isset($_GET['id']) ? $_GET['id'] : "";
$name = isset($_GET['name']) ? $_GET['name'] : "";
$price = isset($_GET['price']) ? $_GET['price'] : "";
$quantity = isset($_GET['quantity']) ? $_GET['quantity'] : "";
/*
* check if the 'cart' session array was created
* if it is NOT, create the 'cart' session array
*/
if(!isset($_SESSION['cart_items'])){
$_SESSION['cart_items'] = array();
}
// check if the item is in the array, if it is, do not add
if(array_key_exists($id, $_SESSION['cart_items'])){
// redirect to product list and tell the user it was added to cart
header('Location: products.php?action=existsamp;id' . $id . 'amp;name=' . $name);
}
// else, add the item to the array
else{
$_SESSION['cart_items'][$name]=$price;
// redirect to product list and tell the user it was added to cart
header('Location: products.php?action=addedamp;id' . $id . 'amp;name=' . $name);
}
Комментарии:
1. его массив, как и любой другой
2. Я предпочитаю массив, чтобы сказать, что мой ключ — это $id, затем остальное, за которым следует количество, цена, название и т. Д. Мне нужно хранить их динамически, точно так же, как я делаю это сейчас. Далее мне нужен цикл for для извлечения каждой информации.
3.
$price = $_GET['price']
просто совет, когда вы продвигаетесь вперед, не позволяйте пользователю устанавливать свою собственную цену — вы можете потерять деньги таким образом.4. Да, так как установить, что это не будет get, потому что это будет ссылка, которую они отправляют правильно?
5. Я не понимаю, почему за него проголосовали, когда я показал, что я сделал, и учитывая мои коды, действительно несправедливо просто отклонять вопрос с требованием и кодами, чтобы показать, что мои усилия выполнены
Ответ №1:
Я думаю, вы можете захотеть использовать многомерный массив.
// else, add the item to the array
else{
$_SESSION['cart_items'][$name]['price']=$price;
if (!empty($quantity)){
$_SESSION['cart_items'][$name]['quantity']=$quantity;
}
// redirect to product list and tell the user it was added to cart
header('Location: products.php?action=addedamp;id' . $id . 'amp;name=' . $name);
}
Обновить:
Чтобы получить доступ к более глубоким измерениям массива, вы могли бы использовать вложенный цикл.
foreach($_SESSION['cart_items'] as $name=>$value){
foreach($value as $key => $val){
echo "$name : $key = $val <br/>n";
}
}
Комментарии:
1. Как прочитать эти значения, поскольку в настоящее время я просто делаю это foreach($ _SESSION[‘cart_items’] как $name=> $value) { итак, для нового метода, как получить значения?
2. пробовал ваш метод, но когда я запускаю foreach, он вообще ничего не печатает.
3. Этот foreach foreach($_SESSION[‘cart_items’] как $name=> $value){ foreach($value как $key => $val){ echo «$name : $key = $val <br/>n»; } } ничего не печатает? Могу ли я получить для каждого имени цену, количество за один выстрел