PHP - array_push错误的JSON格式

时间:2015-11-02 22:35:08

标签: php arrays json

我正在尝试使用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)

2 个答案:

答案 0 :(得分:2)

替换:

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

使用:

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

答案 1 :(得分:0)

您创建双数组(array( array() ))并将其分配给$results变量。接下来,将此double数组推送到类似构造中的早期创建的数组。看:

1步:array( array() ),我们在此阵列上制作array_push()

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

解决方案?

  1. 用单个数组替换double数组并创建空容器。所以$results = array();$resultsContainer = array();。然后,使用值填充$results数组并使用array_push($resultsContainer, $results)

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