我正在尝试使用 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);
更换:
$arr = json_decode($inp);
array_push($results, $arr);
与:
$arr = json_decode($inp, true);
$results = array_merge($results, $arr);
您创建双数组 (
array( array() )
) 并将其分配给 $results
变量。接下来,您可以将此双精度数组推送到之前以类似结构创建的数组。看:
第一步:
array( array() )
,我们在这个数组上制作array_push()
。
第2步:
array( array(), array( array() ) )
,因为我们的双数组落在数组中。
用单数组替换双数组并创建空容器。所以
$results = array();
和$resultsContainer = array();
。然后用值填充 $results
数组并使用 array_push($resultsContainer, $results)
。使用
array_merge()
代替 array_push()
。详细信息:PHP:array_merge。但重要的是:你必须有两个数组。查看文档中的json_decode()
:PHP:json_decode。该函数可以返回对象而不是数组。使用第二个参数 true
作为关联数组。要将 json 文件中的所有结果附加到新的 2d 结构中,请在推送时展开文件的数组数组。如果文件为空,则回退到空数组,不推送任何内容。
代码:(演示)
array_push($results, ...$arr ?: []);
是的,就是这么简单。