有人可以告诉我为什么$ _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中解决阵列的问题,所以非常感谢任何帮助。
答案 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";
但是你没有这样做,所以你所拥有的会议仍未受到影响。