在PHP中访问$ _SESSION

时间:2016-03-23 14:43:56

标签: php arrays session cart

我正在用PHP创建一个库存系统

foreach ($_SESSION["cart_array"] as $each_item) { 
    $item_id = $each_item['item_id'];
    $sql = mysqli_query($mysqli, "SELECT * FROM booklists WHERE book_id='$item_id' LIMIT 1");
    while ($row = mysqli_fetch_array($sql)) {
        $product_name = $row["book_name"];

当我使用此

回复我的$_SESSION
 print_r($_SESSION["cart_array"]);

我在购物车中添加了2件物品,数量为1和55

Array ( 
    [0] => Array ( [item_id] => 37 [quantity] => 1 ) 
    [1] => Array ( [item_id] => 32 [quantity] => 55 ) 
)

我想更新会话中的所有[quantity]值。你觉得我怎么能实现它?

3 个答案:

答案 0 :(得分:1)

问题并不是很明确,因为我不知道需要更新的数量,但要更新每个quantity,你可以做类似的事情。

foreach($_SESSION['cart_array'] as $index => $item){
    // Add 1 to each quantity
    $_SESSION['cart_array'][$index]['quantity']++;
}

// Or...

$increaseBy = 5;
foreach($_SESSION['cart_array'] as $index => $item){
    // Increase by a fixed amount.
    $_SESSION['cart_array'][$index]['quantity'] += $increaseBy;
}

// Or...

foreach($_SESSION['cart_array'] as $index => $item){
    // Increase by a random number between 5 and 15.
    $_SESSION['cart_array'][$index]['quantity'] += rand(5, 15);
}

// Or...

foreach($_SESSION['cart_array'] as $index => $item){
    $increaseBy = $this->getQuantityIncrease($item['item_id']);
    $_SESSION['cart_array'][$index]['quantity'] += $increaseBy;
}

// Or...
// By using references.
foreach($_SESSION['cart_array'] as $index => &$item){
    $increaseBy = $this->getQuantityIncrease($item['item_id']);
    $item['quantity'] += $increaseBy;
}

答案 1 :(得分:0)

你可以在循环中尝试这样的事情,

foreach ($_SESSION["cart_array"] as $key => $item) { 
  $_SESSION['cart_array'][$key]['quantity'] = 13; // set the qty you want
}

答案 2 :(得分:0)

您可以使用foreach循环来执行此操作。

$newQuantityValue = 10;

foreach($_SESSION['cart_array'] as $key => $value){
    $_SESSION[$key]['quantity'] = $newQuantityValue;
}

我们在这里所做的就是为数量分配一个新值,然后使用foreach循环遍历$_SESSION变量,以便我们可以使用新值更新每个数量字段(在本例中为10) )。

有关foreach循环的更多信息,请查看the PHP Docs

传递参考:

您可以通过引用传递它来同样更改值:

$newQuantityValue = 10;

foreach($_SESSION['cart_array'] as $key => &$value){
    $value['quantity'] = $newQuantityValue;
}

因为我们通过引用传递它,所以不再需要引用$_SESSION

来自the docs

  

为了能够直接修改循环中的数组元素,在$ value之前加上&amp ;.在这种情况下,该值将通过引用分配。

作为旁注: 您可以一起省去$newQuantityValue变量,而只需将数字放入循环中,如下所示:

foreach($_SESSION['cart_array'] as $key => $value){
    $_SESSION[$key]['quantity'] = 10;
}