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

php将json数组合并为一个数组,php,arrays,json,file,merge,Php,Arrays,Json,File,Merge,我试图循环浏览一些json文件,并将它们组合成一个json文件。我的计划是创建一个全局$allData数组,并将新的候选对象合并到其中 <?php $allData = array(); $count = 0; if ($handle = opendir('./json/')) { while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..")

我试图循环浏览一些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);  
2.json:

{"date":"11"},{"comment":"another quote"},{"comment":"jim"}
combined.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\u merge($allData,$data)是合并数组的最佳方式。这段代码用于合并两者,但是,问题是我的json格式不正确


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

我的解决方案不好,但它是有效的:我用逗号替换字符串1的},删除第二个字符串的{并连接这两个字符串…

您是否尝试过将数组_merge()与json_decode()结合使用“ed data?我有逻辑,所以不会覆盖它。上面已经声明了$allData。@publ1c_stat1c查看我的更新答案。我认为,
$result
使事情复杂化,您不需要它。将
$data
$allData
合并,并在循环中每次都将其设置为新的
$allData
。我一直在追求这一点,我仍然坚持“我将无法得到所需的结果。它仍在被覆盖。@publ1c_stat1c如果您按照我的建议进行操作,它将不会被覆盖。如果您有问题,请随时更新您的问题,并显示您在合并中的代码尝试,我可以帮您说明错误所在。@publ1c_stat1c这里有一个非常简单的示例,说明您的两个JS关于字符串的合并将非常好:。请给我一个简单的代码示例,说明它是如何失败的,我很乐意为您提供帮助。
if($count == 0){
    $allData = $data;
}