使用 array_push() 将二维数组的行追加到另一个二维数组

问题描述 投票:0回答:3

我正在尝试使用 php 创建一个 JSON 数组。每次我发布一个新数组时,新数组都需要附加在旧数组前面。

我的代码可以工作,但是它创建了一种奇怪的格式,如

[{},[{},[{}]]]

我的 JSON 数组所需的格式是

[{},{},{}...]

[{"Reg_Date":"28-07-2999","Name":"aaa","Surname":"aaa","VideoPath":"aaa","MyComment":"aaa", "ThumbPath":"aaa", "UserId":"aaa"},
{"Reg_Date":"18-07-2015","Name":"bbb","Surname":"bbb","bbb":"bbb","MyComment":"bbb", "ThumbPath":"bbb", "UserId":"bbb"}]

如何正确创建数组?

php:

$results = array(
    array(
        "Reg_Date" => $Reg_Date, 
        "Name" => $NameUser, 
        "Surname" => $SurnameUser, 
        "VideoPath" => $VideoPath, 
        "MyComment" => $MyComment, 
        "ThumbPath" => $ThumbPath, 
        "UserId" => $UserId
    )
);

$inp = file_get_contents('video_JSON_Test.json');
$arr = json_decode($inp);

array_push($results, $arr);

$fp_login = fopen('video_JSON_Test.json', w);
fwrite($fp_login, json_encode($results));
fclose($fp_login);

print_r($results);
echo $NameUser . $SurnameUser, $MyComment . "\n";
echo json_encode($arr);
php arrays json append merging-data
3个回答
2
投票

更换:

$arr = json_decode($inp);
array_push($results, $arr);

与:

$arr = json_decode($inp, true);
$results = array_merge($results, $arr);

0
投票

您创建双数组 (

array( array() )
) 并将其分配给
$results
变量。接下来,您可以将此双精度数组推送到之前以类似结构创建的数组。看:

第一步:

array( array() )
,我们在这个数组上制作
array_push()

第2步:

array( array(), array( array() ) )
,因为我们的双数组落在数组中。

解决方案?

  1. 用单数组替换双数组并创建空容器。所以

    $results = array();
    $resultsContainer = array();
    。然后用值填充
    $results
    数组并使用
    array_push($resultsContainer, $results)

  2. 使用

    array_merge()
    代替
    array_push()
    。详细信息:PHP:array_merge。但重要的是:你必须有两个数组。查看文档中的
    json_decode()
    PHP:json_decode。该函数可以返回对象而不是数组。使用第二个参数
    true
    作为关联数组。


0
投票

要将 json 文件中的所有结果附加到新的 2d 结构中,请在推送时展开文件的数组数组。如果文件为空,则回退到空数组,不推送任何内容。

代码:(演示

array_push($results, ...$arr ?: []);

是的,就是这么简单。

© www.soinside.com 2019 - 2024. All rights reserved.