file_get_contents被fopen写入模式覆盖

时间:2016-02-28 19:54:48

标签: php arrays json fopen

function json_file_append($array, $file)
{
    $fo = file_get_contents($file);
    $ar = json_decode($fo, true);
    if (!is_array($ar)) {
        $ar = $array;
    } else {
        $ar = array_unique(array_merge($ar, $array));
    }

    fwrite(fopen($file, 'w+'), json_encode($ar, JSON_PRETTY_PRINT));
}

我要做的是使用json_decode从json文件中提取现有数组,追加到该数组,然后将其重写为json文件。这本质上是试图避免将所有内容保存到一个大数组,然后在循环结束时将其全部写入,这样如果我需要取消循环,数据就不会从数组中已经经历过的部分丢失

我的问题是,由于某些原因,它只是编写数组的最新元素,比如在fopen上执行写入模式导致file_get_contents被覆盖。

1 个答案:

答案 0 :(得分:0)

file_put_contents确实存在,我认为没有理由不使用它。您没有处理任何并发问题,不执行任何锁定或其他任何需要fopenfwrite的内容。