php将json数组合并为一个数组


php merge json arrays into one array

我正在尝试遍历一些json文件,并将它们组合成一个json文件。我的计划是拥有一个全局$allData数组,并将新的候选者合并到其中。

<?php
$allData = array();
$count = 0;
if ($handle = opendir('./json/')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo $entry."<br />";
            $source_file = file_get_contents('./json/'.$entry);
            $data = json_decode($source_file,TRUE);
            if($data != null){

                $allData = array_merge($allData,$data);
                echo "<br /><br /><br /><br /> !!!! <br /><br /><br /><br />";
                print_r($allData);
            }
            else{
                echo "Invalid Json File";
            } //end else            
        }
closedir($handle);
}
echo "<br /><br /><br /><br /> !!!! <br /><br /><br /><br />";
print_r($allData);  

但是,合并会覆盖文件。如何将多个json文件合并为一个?

我想要以下结果:

1.json:

{"date":"10"},{"comment":"some comment"},{"user":"john"}

2.json:

{"date":"11"},{"comment":"another quote"},{"comment":"jim"}

组合.json

[{"date":"10"},{"comment":"some comment"},{"user":"john"},
{"date":"11"},{"comment":"another quote"},{"comment":"jim"}]

合并数组后,我只得到其中一个值。

[{"date":"25.4.2013 10:40:10"},{"comment":"some text"},{"comment":"some more text"},
[{"date":"25.4.2013 10:45:15"},{"comment":"another quote"},{"comment":"quote"}]]

您的合并很奇怪:

$result = array_merge($allData,$data);

您想将每个新的$data阵列合并到一个不断增长的$allData阵列上,对吗?我想你应该这样做:

$allData = array_merge($allData,$data);

你也可以摆脱这个,这是没有必要的。

if($count == 0){
    $allData = $data;
}

如前所述,$result = array_merge($allData,$data);是合并数组的最佳方式。这段代码可以将两者合并,但问题是我的json格式不正确。

我的两个文件周围没有[],所以它们无法正确合并。

我的解决方案很糟糕,但它很有效:我用逗号替换字符串一的{,删除第二个字符串的{并连接这两个字符串…