【问题标题】:How to return this Multidimensional PHP Array as a JSON object?如何将此多维 PHP 数组作为 JSON 对象返回?
【发布时间】:2012-01-02 14:43:31
【问题描述】:

当控制器请求获取某个用户的所有消息时,我的模型中有此代码:

public function get_messages($user_id) {
    $sql = "SELECT * 
            FROM messages 
            WHERE `to` = '$user_id'
            ORDER BY id DESC";

    $query = $this->db->query($sql);        
    foreach($query->result() as $row) {
        $messages[] = array(
            'id' => $row->id,
            'to' => $row->to,
            'from' => $row->from,
            'message' => $row->message,
            'star' => $row->star,               
            'timestamp' => $row->timestamp          
        );
    }
    return $messages;
}

这是我控制器中的代码:

$result = $this->inbox_m->get_messages($user['id']);

如何使用 PHP 的 json_encode() 函数将结果作为 JSON 对象返回?

通常我会为简单的回报做这样的事情:

json_encode(array('result' => true))

但数组中的所有这些数组都让我感到困惑。

编辑

没关系,伙计们,应该在发布之前实际尝试过。这工作得很好:

echo json_encode(array('result' => $result));

我会在帐户允许的情况下关闭问题。

【问题讨论】:

  • 警告 - 您的代码容易受到 sql 注入的影响。
  • @DanielA.White:正确的词是“易感”。而且没有办法知道它是否存在。他可能在调用该方法之前清理了$user_id 参数。
  • 已修复。但我只是指出来。
  • @BryanRoss - 我责怪 iPhone 的自动更正功能。
  • 谢谢,但我正在清理所有用户并获取和发布输入。

标签: php javascript json model-view-controller


【解决方案1】:

json_encode($messages); 在这里应该没问题。调用它并检查输出以查看它是否是您想要的。但是json_encode 应该毫不费力地处理嵌套数组。

【讨论】:

  • 哈哈,是在发布问题后才意识到的。下次问之前记得先试一下。
【解决方案2】:

通过自己回答来结束问题。就像编辑中解释的那样,这很好用:

echo json_encode(array('result' => $result));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    相关资源
    最近更新 更多