在PHP中将元素添加到数组时,最后一个元素添加两次
我遇到了一个奇怪的问题,当我在PHP中向数组添加元素时,最后一个元素添加了两次。例如,我创建了3个数组,但当我使用在PHP中将元素添加到数组时,最后一个元素添加两次,php,arrays,Php,Arrays,我遇到了一个奇怪的问题,当我在PHP中向数组添加元素时,最后一个元素添加了两次。例如,我创建了3个数组,但当我使用array\u push()或$array[]组合它们时,它复制了最后一个元素,给了我4个数组。下面是一个例子: $master_array = []; foreach($days as $i=>$day){ $single_array[$i] = array( 'id' => $day->id, 'some_variable
array\u push()
或$array[]
组合它们时,它复制了最后一个元素,给了我4个数组。下面是一个例子:
$master_array = [];
foreach($days as $i=>$day){
$single_array[$i] = array(
'id' => $day->id,
'some_variable' => $day->some_variable
);
$master_array[] = $single_array[$i];
}
$result = json_encode($master_array);
如果所需的输出是
[1,2],[2,3],[3,4]
,则它将回显[1,2],[2,3],[3,4],[3,4]
,复制最后一个元素。在我运行json\u encode
之前,似乎一切正常。有什么建议吗?为什么要为$single\u array
制作多维数组?你不需要额外的维度
$master_array = array();
foreach($days as $i=>$day){
$single_array = array(
'id' => $day->id,
'some_variable' => $day->some_variable
);
$master_array[] = $single_array;
}
$result = json_encode($past_appts);
+1因为你是对的,但是-1因为这不会改变任何事情。他也可以使用
$singleArray[0][0][0][1]
——如果他以同样的方式访问它,他也会遇到同样的问题。因为你正在用json_编码$pass_appts,而在你展示的代码片段中,它没有被引用到其他任何地方,这是任何人都猜得到的好问题,我只是为了简单起见将我的变量切换到了泛型变量,错过了一个。days指的是SQL查询的行。我不知道示例中缺少代码的哪一部分,但您正在将关联数组“推”到“主数组”。因为json不知道关联数组,所以结果不会是数组列表,而是对象列表。因此,它将是[{id:1,“somevalue:2},{id:2,“somevalue:3},{id:3,“somevalue:4}]
-而不是你说的输出是什么。