Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从数据库表数据用PHP编码JSON_Javascript_Php_Json - Fatal编程技术网

Javascript 从数据库表数据用PHP编码JSON

Javascript 从数据库表数据用PHP编码JSON,javascript,php,json,Javascript,Php,Json,我希望能够将JSON编码成特定的格式,以便可以与我创建的另一个脚本一起使用。我能够用PHP将其编码为JSON,但需要能够将这些编码的JSON集推送到“命名”数组中 现在我得到了这个 { "ann_date":"14\/12\/2017", "ann_title":"Return Dates", "ann_content":"Have a good break. The course timetable resumes on Wednesday 3rd January 20

我希望能够将JSON编码成特定的格式,以便可以与我创建的另一个脚本一起使用。我能够用PHP将其编码为JSON,但需要能够将这些编码的JSON集推送到“命名”数组中

现在我得到了这个

{
    "ann_date":"14\/12\/2017",
    "ann_title":"Return Dates",
    "ann_content":"Have a good break. The course timetable resumes on Wednesday 3rd January 2018",
    "tutor":"John Smith"
}
从这个代码

class AnnData {
    public $ann_date = "";
    public $ann_title = "";
    public $ann_content = "";
    public $tutor = "";
}

while($row = mysqli_fetch_array($result)) {
    $ann_date = $row['ann_date'];
    $ann_title = $row['ann_title'];
    $ann_content = $row['ann_content'];
    $tutor = $row['tutor'];

    $annData = new AnnData();
    $annData->ann_date =  $ann_date;
    $annData->ann_title  = $ann_title;
    $annData->ann_content  = $ann_content;
    $annData->tutor  = $tutor;

    $annQ = json_encode($annData);
但你需要它看起来像这样吗

{
"announcements":[{
    "ann_date":"14\/12\/2017",
    "ann_title":"Return Dates",
    "ann_content":"Have a good break. The course timetable resumes on Wednesday 3rd January 2018",
   "tutor":"John Smith"}]
}

可以声明关联数组,然后对其进行编码:

$annData = new AnnData();
...
$out = array('announcements' => array($annData));
$outJson = json_encode($out);

通过从数据库中获取正确的列(仅需要4列)并一次获取所有行,可以大大简化这一过程:

$annQ = json_encode([
    'announcements' => mysqli_fetch_all($result, MYSQLI_ASSOC),
]);
这将替换您发布的所有代码


关联数组将作为对象存储在字符串中,因此如果您不打算在其他任何地方使用该类,也不需要该类。

此线程将帮助您:希望这有帮助
$result['announcements'][=$annData
…您只需构建所需的实际数据结构…尝试
$result=array()$结果['announces']=$annData$annQ=json_encode($result),这是您想要的结果吗?有了这段代码,我需要能够向数组中添加更多的JSON对象,此时它正在为每个JSON对象创建一个数组。抱歉,这是一个PHP新手。$announcements=array();对于(…){array_push($announcements,$object);}$outJson=json_encode(array('announcements'=>$announcements));如果db模式在所述表中没有其他字段,则是这样。@YvesLeBorg这就是为什么我提到OP需要从数据库中获取正确的列:-)duh。。。抱歉吵闹;)我发现fetch_all未定义,怀疑是因为PHP版本,还有其他方法吗?@saunders07听起来不太可能,它适用于PHP5.3+。你的版本是什么?