Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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 - Fatal编程技术网

在PHP中将元素添加到数组时,最后一个元素添加两次

在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

我遇到了一个奇怪的问题,当我在PHP中向数组添加元素时,最后一个元素添加了两次。例如,我创建了3个数组,但当我使用
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}]
-而不是你说的输出是什么。