【问题标题】:Add Additional Objects in JSON在 JSON 中添加其他对象
【发布时间】:2015-04-30 01:11:50
【问题描述】:

我目前正在使用 JSON 编码的数组在我的数据库中显示标题以实现自动建议功能。

看起来像这样:

<?php
require_once('./includes/config.php');
require_once('./includes/skins.php');

mysql_connect($conf['host'], $conf['user'], $conf['pass']);
mysql_select_db($conf['name']);

    $query2012 = sprintf("SELECT * FROM imdb WHERE poster !='posters/noposter.jpg' ORDER BY RAND() DESC LIMIT %d;", 8);
    $result = mysql_query($query2012);



    //Create an array
    $json_response = array();

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        $row_array['title'] = $row['title'];
        $row_array['year'] = $row['year'];
        $row_array['poster'] = $row['poster'];

        //push the values in the array
        array_push($json_response,$row_array);


    }

    echo json_encode($json_response);

    //Close the database connection
    fclose($db);

?>

这会返回:

[{"title":"The Woman","year":"2011","poster":"posters\/tt1714208.jpg"},{"title":"DeadHeads","year":"2011","poster":"posters\/tt1273207.jpg"},{"title":"The Innkeepers","year":"2011","poster":"posters\/tt1594562.jpg"},{"title":"John Carter","year":"2012","poster":"posters\/tt0401729.jpg"},{"title":"American Reunion","year":"2012","poster":"posters\/tt1605630.jpg"},{"title":"The Avengers","year":"2012","poster":"posters\/tt0848228.jpg"},{"title":"Chronicle","year":"2012","poster":"posters\/tt1706593.jpg"},{"title":"Big Miracle","year":"2012","poster":"posters\/tt1430615.jpg"}]

首先,我如何手动添加一个额外的对象到这个输出?例如,假设我想添加:{"status":"ok","message":"Success","data":

{"status":"ok","message":"Success","data":[{"title":"The Woman","year":"2011","poster":"posters\/tt1714208.jpg"},{"title":"DeadHeads","year":"2011","poster":"posters\/tt1273207.jpg"},{"title":"The Innkeepers","year":"2011","poster":"posters\/tt1594562.jpg"},{"title":"John Carter","year":"2012","poster":"posters\/tt0401729.jpg"},{"title":"American Reunion","year":"2012","poster":"posters\/tt1605630.jpg"},{"title":"The Avengers","year":"2012","poster":"posters\/tt0848228.jpg"},{"title":"Chronicle","year":"2012","poster":"posters\/tt1706593.jpg"},{"title":"Big Miracle","year":"2012","poster":"posters\/tt1430615.jpg"}]}

如果没有找到 mysql 记录,则显示 json 输出

{"status":"error","message":"No Reord found"}

如何添加这个?

【问题讨论】:

    标签: php mysql arrays json


    【解决方案1】:

    您可以在编码之前将其添加到 $json_response 数组中(json_encode() 通过修改它的结构:

    $json_response = array(
        'data' => $json_response,
        'status' => 'ok',
        'message' => 'Successs'
    );
    

    您还可以修改将数据附加到最终结果变量,以便在定义 $json_response 数组时添加子数组:

    $json_response = array('data' => array());
    

    并在while循环中添加索引数据

    array_push($json_response['data'], $row_array);
    

    在循环之后,您可以通过以下方式轻松附加您的状态和消息:

    $json_response['status'] = 'ok';
    $json_response['message'] = 'Success';
    

    要添加错误,只需检查数据数组是否为空。对于第一个解决方案:

    if (empty($json_response)) {
        $json_response = array(
            'status' => 'error',
            'message' => 'No Reord found'
        );
    } else {
        //  here append success message
    }
    

    在第二种情况下,只需将 if 条件更改为:

    if (empty($json_response['data']))
    

    【讨论】:

      猜你喜欢
      • 2011-03-31
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2013-10-14
      • 1970-01-01
      相关资源
      最近更新 更多