簡體   English   中英

將更新的值分配給$ _SESSION數組

[英]Assigning updated value to $_SESSION array

有人可以告訴我為什么$ _SESSION數組沒有被下面的代碼修改。 對象是將日期放在每個記錄的DoNotShipBefore中。 由於$ Row ['DoNotShipBefore']的輸出顯示正確的日期,因此顯然會將值放在某個位置。 但是,循環完成后,似乎沒有采取。

session_start();
print_r($_SESSION[cart_array]);
foreach($_SESSION[cart_array] as $Row) {        

      $Row['DoNotShipBefore'] = date("m/d/Y") ;
      echo "<br>New Value of DoNotShipBefore (From cart_array): ". $Row['DoNotShipBefore'] ;

}
print "<br><br>";
print_r($_SESSION[cart_array]);
die();

輸出如下:

Array ( [0] => Array ( [groupId] => 26141 [DoNotShipBefore] => 10/01/2017)) 

New Value of DoNotShipBefore (From cart_array): 07/06/2017

Array ( [0] => Array ( [groupId] => 26141  [DoNotShipBefore] => 10/01/2017))

// Should be (or what I want is):
Array ( [0] => Array ( [groupId] => 26141  [DoNotShipBefore] => 07/06/2017))

我很難全神貫注於如何在SESSION中解決數組問題,因此非常感謝您的幫助。

除非值是對象,否則當您分配變量時,它都會復制值(內部使用寫時復制來提高效率)。 因此$Row$_SESSION中行的副本。 您正在修改該副本,而不是原始數組。

通過在變量前加上& ,可以使用引用變量使其引用原始數組。

foreach($_SESSION['cart_array'] as &$Row) {        

什么是cart_array 也許您應該使用$_SESSION['cart_array']嗎? 有PHP通知嗎?

您的代碼中沒有任何東西實際在會話數組中分配任何值。

$_SESSION['some_var'] = "Some Value";

但是您沒有這樣做,因此您保持的會話保持不變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM