1

在两天的大部分时间里,我一直在尝试解决这个问题,但没有成功。我正在尝试使用 php 组合/添加到存储在我服务器上的 .json 文件中的 json 数组。

这是我试图结合的一个简短版本。

盒子.json:

[{"date":"25.4.2013 10:40:10"},{"comment":"some text"},{"comment":"some more text"}]

发布的json:

[{"date":"25.4.2013 10:45:15"},{"comment":"another quote"},{"comment":"quote"}]

这就是我需要的。

[{"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"}]

这就是我得到的。(数组中的数组)

[{"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"}]]

这是我的代码:

<?php
$sentArray = $_POST['json'];
$boxArray = file_get_contents('ajax/box.json');
$sentdata = json_decode($sentArray);
$getdata = json_decode($boxArray);
$sentdata[] = $getdata;   /* I also tried array_push($sentdata, $getdata); */
$json = json_encode($sentdata);
$fsize = filesize('ajax/box.json');
if ($fsize <= 5000){
    if (json_encode($json) != null) { /* sanity check */
    $file = fopen('ajax/box.json' ,'w+');
    fwrite($file, $json);
    fclose($file);
}else{
    /*rest of code*/
}
?>

请帮助我的理智开始受到质疑。

4

3 回答 3

1

这是你的问题

$sentdata[] = $getdata; 

利用foreach

foreach($getdata as $value)
    $sentdata[] = $value;

更新:$sentdata但我认为你 不需要这个$getdata

foreach($senttdata as $value)
    $getdata[] = $value;

然后放到$getdata你的文件中。

于 2013-04-25T19:16:54.500 回答
1
$box = json_decode(file_get_contents('ajax/box.json'));
$posted = json_decode($_POST['json']);
$merge = array_merge ((array)$box,(array)$posted);

如果 $box 或 $posted 变为 null 或 false,则强制转换(数组)防止错误,它将是一个空数组

于 2013-04-25T19:29:32.553 回答
0

而不是这个:

$sentdata[] = $getdata;   /* I also tried array_push($sentdata, $getdata); */

尝试:

$combinedData = array_merge($sentData, $getData);
$json = json_encode($combinedData);

通过使用array_merge,您可以将数组组合成一个数组,而不是将一个数组作为值添加到另一个数组中。

请注意,我更改了结果数据的名称 - 尽量避免使用相同名称和不同大小写的变量,这将使事情更容易理解(对于您和支持您的代码的未来开发人员)。

干杯

于 2013-04-25T19:17:50.240 回答