使用 php echo 语句构建 JSON

Posted

技术标签:

【中文标题】使用 php echo 语句构建 JSON【英文标题】:Build JSON with php echo statements 【发布时间】:2011-10-29 06:04:07 【问题描述】:

我正在尝试从 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;
    

它返回一个像这样的json数组

["user_id":"9","pheed_id":"2","pheed":"This is my first real pheed, its got potential ","datetime":"1313188898","comments":"0","user_id":"9","pheed_id":"11","pheed":"My stomach being hurting all day","datetime":"1313422390","comments":"0","user_id":"9","pheed_id":"11","pheed":"My stomach being hurting all day","datetime":"1313422390","comments":"0","user_id":"9","pheed_id":"10","pheed":"Thank God for ***.com ","datetime":"1313358605","comments":"0",]

但我似乎无法使用 jquery 访问它

【问题讨论】:

你需要那个逗号吗 你是如何尝试用 jQuery 访问它的? 正如建议的那样,末尾的逗号破坏了 json 解码。此外,正如@derekerdmann 的提问者所建议的那样,为此使用 json_encode,这就是它的意义所在。 是的,只需将您的 PHP 数组 交给 json_encode() 函数即可。 我在 PHP 和 javascript 之间一直使用 json_encode。您应该重新访问您的代码并执行相同的操作。无需自己包装。 【参考方案1】:

我认为问题在于数组末尾的逗号。

与其尝试自己编码,不如使用 PHP 的 json_encode 函数。它已经过无数次的测试和验证,因此您不必重新发明***。

【讨论】:

@MrFoh:这是一个不同的问题。我建议设置您的标头以表明您正在返回 JSON。【参考方案2】:

已经对@derekerdmann 投了赞成票,但我想我会补充...

如果您更改,您的代码将起作用:

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

if($i == count($data) - 1) 

但是,不要那样做。如果您只是将 $data 数组的每个成员的所有内容放入 json 中,那么您应该可以只使用 json_encode($data)。如果您只提取某些部分,则构建一个过滤数据的辅助数组,然后 json_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;

【讨论】:

以上是关于使用 php echo 语句构建 JSON的主要内容,如果未能解决你的问题,请参考以下文章

在 echo 语句中添加 PHP 变量作为 href 链接地址?

PHP echo和print语句

PHP中echo与print语句的实例教程

php PHP echo和print语句

20181005 PHP 中 echo ,print,vardump 语句区别

为啥 echo 语句没有在我的 PHP 代码中生成任何内容?