合并到数组并获取错误

时间:2016-03-09 00:41:46

标签: php arrays json

以下是我正在做的事情,将值从表单存储到数组,然后将该数组存储到文件中( array.jason )。

    if (isset($_POST['addEntity'])) {
    $values = array_values($_POST);
    print_r($values);
    unset($values[1]);
    var_dump($values);
    $file_values = json_decode(file_get_contents('array.json'), true);
    array_combine($file_values,$values);
    file_put_contents("array.json",json_encode($values),FILE_APPEND);
}

现在,当我尝试将数组从文件($ file_values)合并到我从提交($ values)获得的数组时,我收到此错误或警告:(

  

警告:array_combine()期望参数1为数组,给定null   在 C:\ Users \ tej \ PhpstormProjects \ Final Year Project \ index.php上   第9行

1 个答案:

答案 0 :(得分:1)

因此,您的代码中存在一些错误,导致您出现一些错误。首先,我将向您展示如何修复代码,以及发生了什么问题以及发生了什么。

因此,为了修复代码,您必须将array_combine()的返回值分配回$values并覆盖该文件,因为您已将新数据添加到旧的已解码数据,例如

if (isset($_POST['addEntity'])) {
    $values = array_values($_POST);
    unset($values[1]);

    $file_values = json_decode(file_get_contents('array.json'), true);
    $values = array_combine($file_values,$values);
    file_put_contents("array.json", json_encode($values));
}

但是如果没有这个分配和文件的追加是发生了什么。您刚刚将新数据编码为JSON并将其附加到您的文件中。意味着你创造了:

[DATA 1]
[DATA 2]
[DATA ...]

因此,当您尝试再次对其进行解码时,所有已编码的编码数据不再有效,即使它们是单行,也不是整个文件。然后导致json_decode()返回NULL,因为它不是有效的JSON,最后你试图将NULL与一个导致PHP错误的数组结合起来。