将更新的值分配给$ _SESSION数组

时间:2017-07-06 17:19:14

标签: php arrays

有人可以告诉我为什么$ _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中解决阵列的问题,所以非常感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

除非值是一个对象,当你分配一个变量时,它会复制一个值(在内部它使用copy-on-write来提高效率)。因此$Row$_SESSION中行的副本。您正在修改该副本,而不是原始数组。

通过将&放在变量之前,您可以使用引用变量使其引用原始数组。

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

答案 1 :(得分:1)

什么是cart_array?也许你应该使用$_SESSION['cart_array']?任何PHP通知?

答案 2 :(得分:0)

您的代码中没有任何内容实际上在会话数组中分配任何值。

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

但是你没有这样做,所以你所拥有的会议仍未受到影响。