使用 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 链接地址?