使用PHP将对象追加到JSON文件中的数组[已关闭]

niwlg2el  于 2023-04-22  发布在  PHP
关注(0)|答案(1)|浏览(158)

已关闭,此问题需要更focused,目前不接受回答。
**要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

昨天关门了。
Improve this question
我有一个JSON文件,看起来像这样:

[{"id":38,"player1":"1","player2":"1997"}]

我想添加一个新对象,它看起来像这样:

[{"id":38,"player1":"1","player2":"1997"},{"id":39,"player1":"51","player2":"89"}]

这是我的代码:

<?php                                                 
 $file = fopen("items.json", "w");
 $data = json_decode($file, TRUE);
 $makeid = time();
 $item = array(
             'id'       =>     $makeid,
             'player1'  =>     $userid,
             'player2'  =>     $_GET['fightid']
        );
        
        $array_data = array_push($data, $item);
        $final_data = json_encode($array_data);
    
    fwrite($file, $final_data);
    fclose($file);
?>

但我得到的只是一个包含null的文件,这是为什么?
谢谢大家。

wnrlj8wa

wnrlj8wa1#

试试这样:

<?php

$fileName = 'items.json';

if (($jsonData = file_get_contents($fileName)) === false) {
    throw new Exception ('File not readable');
}

if (($data = json_decode($jsonData, true)) === NULL)  {
    throw new Exception ('Data is not valid');
}

$data[] = ['id' => time(),
           'player1'  => $userid,
           'player2'  => $_GET['fightid'] ?? ''  // evaluate if sanitize $_GET['fightid'] 
];

if (($jsonData = json_encode ($data)) === false) {
    throw new Exception ('New data is not valid');
}

if ((file_put_contents($fileName, $jsonData)) === false) {
    throw new Exception ('Data file not writable');
}

附录

然后您必须管理异常
或者为了调试,你必须在源代码的顶部,在 〈?php 标记之后,通常的instructions to show errors

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

相关问题