以下是我正在做的事情,将值从表单存储到数组,然后将该数组存储到文件中( 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行
答案 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错误的数组结合起来。