Hướng dẫn how to update session array value in php - cách cập nhật giá trị mảng phiên trong php

Tôi có một mảng 'sản phẩm' trong phiên của mình, một sản phẩm là một mảng tên, mã và số lượng, tôi muốn thay đổi số lượng khi tôi nhấn nút 'qty_up':

PHP của tôi là đây:

if ($_POST['qty_up']==''){
    foreach ($_SESSION["products"] as $key => $val)
    {
        if ($val["product_code"] == $_POST['code']) {
            $val["product_qty"] += 1;
        }
    }
}

Điều này thay đổi $ val ["sản phẩm_qty"] nhưng không phải là giá trị thực trong phiên

Đây là mảng 'sản phẩm' của tôi trong phiên:

array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)

Hướng dẫn how to update session array value in php - cách cập nhật giá trị mảng phiên trong php

Khi được hỏi ngày 4 tháng 5 năm 2016 lúc 10:58May 4, 2016 at 10:58

3

Nhu cầu của $ Val này là gì? Bạn có thể cập nhật trực tiếp giá trị phiên.

if ($_POST['qty_up']=='') {

   foreach ($_SESSION["products"] as $key => &$val) {

       if ($val["product_code"] == $_POST['code']) {
           //$val["product_qty"] += $val["product_qty"];
           $_SESSION["products"][$key]['product_qty'] +=  $val["product_qty"]; // Add this
       }

    }
}

Đã trả lời ngày 4 tháng 5 năm 2016 lúc 11:02May 4, 2016 at 11:02

Hướng dẫn how to update session array value in php - cách cập nhật giá trị mảng phiên trong php

0

Theo cách thông thường foreach($products as $value) foreach đi bộ qua $products và gán mọi yếu tố cho giá trị $ biến trong mỗi vòng lặp, đó là bản sao của giá trị phần tử, vì vậy trong trường hợp của bạn thay đổi

array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
0 sẽ không thay đổi
array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
1

Để có thể sửa đổi trực tiếp các phần tử mảng trong vòng lặp đi trước

array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
2 với
array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
3. Trong trường hợp đó, giá trị sẽ được gán bằng tham chiếu.

Chỉnh sửa các đoạn mã của bạn như bên dưới:

foreach ($_SESSION["products"] as &$val)
{
    if ($val["product_code"] == $_POST['code']) {
        $val["product_qty"] += $val["product_qty"];
    }
}

Nếu bạn cảm thấy bối rối, hãy đọc hướng dẫn chính thức của PHP, nó giải thích tốt hành vi này. http://php.net/manual/en/control-structures.foreach.php

Đã trả lời ngày 4 tháng 5 năm 2016 lúc 11:02May 4, 2016 at 11:02

Hướng dẫn how to update session array value in php - cách cập nhật giá trị mảng phiên trong php

Theo cách thông thường foreach($products as $value) foreach đi bộ qua $products và gán mọi yếu tố cho giá trị $ biến trong mỗi vòng lặp, đó là bản sao của giá trị phần tử, vì vậy trong trường hợp của bạn thay đổi

array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
0 sẽ không thay đổi
array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
1Kevin Yan

Để có thể sửa đổi trực tiếp các phần tử mảng trong vòng lặp đi trước

array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
2 với
array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
3. Trong trường hợp đó, giá trị sẽ được gán bằng tham chiếu.11 silver badges19 bronze badges

Chỉnh sửa các đoạn mã của bạn như bên dưới:

$_SESSION['products']["product_qty"] += $val["product_qty"];

Đã trả lời ngày 4 tháng 5 năm 2016 lúc 11:02May 4, 2016 at 11:02

Hướng dẫn how to update session array value in php - cách cập nhật giá trị mảng phiên trong php

Theo cách thông thường foreach($products as $value) foreach đi bộ qua $products và gán mọi yếu tố cho giá trị $ biến trong mỗi vòng lặp, đó là bản sao của giá trị phần tử, vì vậy trong trường hợp của bạn thay đổi

array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
0 sẽ không thay đổi
array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
1Murad Hasan

Để có thể sửa đổi trực tiếp các phần tử mảng trong vòng lặp đi trước

array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
2 với
array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
3. Trong trường hợp đó, giá trị sẽ được gán bằng tham chiếu.2 gold badges20 silver badges40 bronze badges

$_SESSION["products"][product_code to update]["product_qty"]=new value

Hướng dẫn how to update session array value in php - cách cập nhật giá trị mảng phiên trong php

Chỉnh sửa các đoạn mã của bạn như bên dưới:

Để có thể sửa đổi trực tiếp các phần tử mảng trong vòng lặp đi trước

array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
2 với
array (size=1)
  'products' => 
    array (size=5)
      213453 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '213453' (length=6)
          'product_name' => string 'Kingfisher' (length=10)
          'product_price' => string '12.00' (length=5)
      48754 => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '48754' (length=5)
          'product_name' => string 'Minute maid' (length=11)
          'product_price' => string '2.00' (length=4)
      '3545231ES0' => 
        array (size=5)
          'product_qty' => string '1' (length=1)
          'product_code' => string '3545231ES0' (length=10)
          'product_name' => string 'Jagurt' (length=6)
          'product_price' => string '1.00' (length=4)
3. Trong trường hợp đó, giá trị sẽ được gán bằng tham chiếu.2 gold badges20 silver badges40 bronze badges

Chỉnh sửa các đoạn mã của bạn như bên dưới:May 4, 2016 at 11:05

Nếu bạn cảm thấy bối rối, hãy đọc hướng dẫn chính thức của PHP, nó giải thích tốt hành vi này. http://php.net/manual/en/control-structures.foreach.php

if (isset($_SESSION['some_session_var'])) {
    $_SESSION['some_session_var'] = $udpated_value; //$udpated_value can you be your modified value.
}

Kevin Yankevin Yan

1.23611 Huy hiệu bạc19 Huy hiệu đồngMay 4, 2016 at 11:01

Hướng dẫn how to update session array value in php - cách cập nhật giá trị mảng phiên trong php

1