Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组将只循环出两行,随后覆盖第二行/索引_Php_Arrays_Object_Map_Foreach - Fatal编程技术网

PHP数组将只循环出两行,随后覆盖第二行/索引

PHP数组将只循环出两行,随后覆盖第二行/索引,php,arrays,object,map,foreach,Php,Arrays,Object,Map,Foreach,我得到一个表单帖子,在按下(提交)的按钮上有一个数据库中项目的值(主键)($artid) 对于每一篇文章,我都会尝试将一个新的对象值添加到一个数组中,该数组映射到$artid设置的键,因此它应该是唯一的。数组被添加到$\u会话中,以便每次都获得相同的数组 第一个对象添加得很好,但其他对象只是覆盖阵列中的第二个位置。我需要它继续成长 代码: 提前感谢您的帮助 您能更详细地介绍一下您的foreach中发生了什么吗?是否将类属性指定给数组 此外,在将数组分配给会话值之前,可以尝试序列化数组 如果其他方

我得到一个表单帖子,在按下(提交)的按钮上有一个数据库中项目的值(主键)($artid)

对于每一篇文章,我都会尝试将一个新的对象值添加到一个数组中,该数组映射到$artid设置的键,因此它应该是唯一的。数组被添加到$\u会话中,以便每次都获得相同的数组

第一个对象添加得很好,但其他对象只是覆盖阵列中的第二个位置。我需要它继续成长

代码:


提前感谢您的帮助

您能更详细地介绍一下您的foreach中发生了什么吗?是否将类属性指定给数组

此外,在将数组分配给会话值之前,可以尝试序列化数组

如果其他方法都失败了,这通常会帮助我认识到我的错误所在:

print_r($cartArr);
祝你好运

编辑:
在看了另一个答案后,我意识到我也忽略了会话变量的早期赋值。您需要在您的foreach之后分配,或者像Ben所说的,您的foreach所做的工作不会继续下去。(尽管如此,我仍然会序列化数组)

添加新元素后,看起来不像您将会话数组设置回原来的状态。因此,下次页面加载时,新值未保存

您有两种选择:

1) 在您的foreach集合
$\u会话['itemArray']=$cartArr这将在会话中保存任何更改(例如添加新元素)


2) 将
$cartArr
指定为对
$\u会话['itemArray']
的引用,以便对
$cartArr
所做的任何更改实际上都是对
$\u会话['itemArray']
进行的,您可以通过
$cartArr=&$\u会话['itemArray']执行此操作就在您的
else

之后,我改为使用
var\u dump()
并且没有回头看。
print_r($cartArr);