JSON只打印数组中的最后一个对象

时间:2014-05-16 12:53:00

标签: php json wordpress

我试图从我的wordpress页面制作自定义json feed。问题是循环似乎覆盖了每个对象,因此它只将最后一个对象打印为json。我也试过在循环中移动回声,但是它看起来可能不会在浏览器中格式化。

这是我的代码:

foreach ($posts as $post) {

    $r = str_replace("\n",'', shorten_txt($post->post_content, 500));
    $n = str_replace("\r", '', $r);
    $post_data = array(
    'title' => get_the_title($post->ID),
    'link' => get_permalink($post->ID),
    'image' => catch_that_image(),
    'content' => $n,
    'time' => strtotime($post->post_date_gmt));

     $data = (array('item' => $post_data));



}

echo json_encode($data);

1 个答案:

答案 0 :(得分:0)

$data的声明发生在foreach内,这意味着每次分配值时都会重新初始化它。我不确定你是否错误地做了这件事,或者你不确定如何做到这一点。

试试这个

$data = array();
foreach ($posts as $post) {
    $r = str_replace("\n",'', shorten_txt($post->post_content, 500));
    $n = str_replace("\r", '', $r);
    $post_data = array(
    'title' => get_the_title($post->ID),
    'link' => get_permalink($post->ID),
    'image' => catch_that_image(),
    'content' => $n,
    'time' => strtotime($post->post_date_gmt));
     $data[] = (array('item' => $post_data));

}
echo json_encode($data);

这样做,它是在$data循环之外声明foreach变量,并且赋值被推送到此数组。希望这会有所帮助。