使用php echo语句构建JSON

使用php echo语句构建JSON,php,javascript,mysql,json,codeigniter,Php,Javascript,Mysql,Json,Codeigniter,我正在尝试从php数组构建JSON数组 这是我在控制器中的功能 function latest_pheeds() { if($this->isLogged() == true) { $this->load->model('pheed_model'); $data = $this->pheed_model->get_latest_pheeds(); $last = end(

我正在尝试从php数组构建JSON数组 这是我在控制器中的功能

function latest_pheeds() {
            if($this->isLogged() == true) {
            $this->load->model('pheed_model');
            $data = $this->pheed_model->get_latest_pheeds();
            $last = end($data);
            echo "[";
                for($i = 0; $i < count($data); $i++) {
                    echo '{"user_id":"'.$data[$i][0]['user_id'].'",';
                    echo '"pheed_id":"'.$data[$i][0]['pheed_id'].'",';
                    echo '"pheed":"'.$data[$i][0]['pheed'].'",';
                    echo '"datetime":"'.$data[$i][0]['datetime'].'",';
                        if($i == count($data)) {
                        echo '"comments":"'.$data[$i][0]['comments'].'"}';
                        }else {
                            echo '"comments":"'.$data[$i][0]['comments'].'"},';
                        }
                    }

                echo "]";
            }
            return false;
    }

但是我似乎无法使用jquery访问它,我相信问题在于数组末尾的逗号


与其自己尝试编码,不如使用PHP的函数。它经过无数次的测试和验证,所以你不必重新发明轮子。

已经投票支持@derekerdmann,但我想补充一点

如果您更改以下内容,您的代码将正常工作:

if($i == count($data)) {

但是,不要那样做。如果您只是将
$data
数组的每个成员的所有内容放入json中,那么您应该能够只
json\u编码($data)
。如果您只提取某些部分,那么构建一个过滤数据的二级数组,并将其改为
json\u encode

function latest_pheeds() {
    if($this->isLogged() == true) {
        $this->load->model('pheed_model');
        $data = $this->pheed_model->get_latest_pheeds();
        $filtered_items = array();
        foreach ($data as $member) {
            $filtered_item = array();
            $filtered_item['user_id'] = $member['user_id'];
            $filtered_item['pheed_id'] = $member['pheed_id'];
            ...
            ...
            $filtered_items[] = $filtered_item;
        }
        echo json_encode($filtered_items);
    }
    return false;
}

您是否需要结尾处的逗号?您如何尝试使用jQuery访问它?正如所建议的,结尾处的逗号正在破坏json解码。此外,正如@derekerdmann在asker中所建议的那样,使用json_encode来实现这一点,这就是它的目的。是的,只需将您的PHP数组赋给json_encode()函数。我在PHP和javascript之间一直使用json_encode。您应该重新访问代码并执行相同的操作。不需要自己包装。@MrFoh:那是另一个问题。我建议您设置标题以指示返回JSON。
if($i == count($data) - 1) {
function latest_pheeds() {
    if($this->isLogged() == true) {
        $this->load->model('pheed_model');
        $data = $this->pheed_model->get_latest_pheeds();
        $filtered_items = array();
        foreach ($data as $member) {
            $filtered_item = array();
            $filtered_item['user_id'] = $member['user_id'];
            $filtered_item['pheed_id'] = $member['pheed_id'];
            ...
            ...
            $filtered_items[] = $filtered_item;
        }
        echo json_encode($filtered_items);
    }
    return false;
}