首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在json_encode中组合多个foreach结果

在json_encode中组合多个foreach结果
EN

Stack Overflow用户
提问于 2012-08-18 06:23:22
回答 1查看 1.8K关注 0票数 0

我正在尝试获取以下json_encode输出:

数组:

代码语言:javascript
复制
echo json_encode(array(
             array(
             'id' => 111,
             'title' => "Event1",
             'start' => "2012-8-10",
             'end' => "2012-8-15",
             'url' => "http://yahoo.com/",
                ),
            array(
             'id' => 222,
             'title' => "Event2",
             'start' => "2012-8-20",
             'end' => "2012-8-22",
             'url' => "http://yahoo.com/"
               )
              ));

输出:

代码语言:javascript
复制
    [{"id":111,"title":"Event1","start":"2012-8-10","end":"2012-8-15","url":"http:\/\/yahoo.com\/"},{"id":222,"title":"Event2","start":"2012-08-20","end":"2012-08-22","url":"http:\/\/yahoo.com\/"}]

但是,当我使用以下代码时

代码语言:javascript
复制
global $wpdb;
$row = $wpdb->get_results("SELECT $wpdb->posts.ID, $wpdb->posts.post_title FROM $wpdb->posts WHERE $wpdb->posts.post_type = 'calendar' AND $wpdb->posts.post_status = 'publish' ORDER BY $wpdb->posts.post_date ASC");
foreach ($row as $post) {
    $postid = $post->ID;
    $post_title = $post->post_title;
    $startDate =  get_post_meta($post->ID,'calendar_start-date',true);
    $endDate =  get_post_meta($post->ID,'calendar_end-date',true);
    $link =  get_post_meta($post->ID,'calendar_link',true);
    $arr = array('id' => $postid, 'title' => $post_title, 'start' => $startDate, 'end' => $endDate, 'url' => $link);
    echo json_encode($arr);
    }

我得到的输出是

代码语言:javascript
复制
{"id":"320","title":"Test Event One","start":"2012-8-17","end":"2012-8-24","url":"http:\/\/www.yahoo.com"}{"id":"321","title":"Test Event Two","start":"2012-8-21","end":"2012-8-30","url":"http:\/\/www.google.com"}

我知道这可能是因为json_encode在foreach循环中。然而,当我在外面尝试时,它只显示了第一个结果。如何组合这些foreach值来实现上面提到的输出?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-18 06:30:46

您可以使用以下代码:

代码语言:javascript
复制
global $wpdb;
$posts = array();
$row = $wpdb->get_results("SELECT $wpdb->posts.ID, $wpdb->posts.post_title FROM $wpdb->posts WHERE $wpdb->posts.post_type = 'calendar' AND $wpdb->posts.post_status = 'publish' ORDER BY $wpdb->posts.post_date ASC");
foreach ($row as $post) {
    $postid = $post->ID;
    $post_title = $post->post_title;
    $startDate =  get_post_meta($post->ID,'calendar_start-date',true);
    $endDate =  get_post_meta($post->ID,'calendar_end-date',true);
    $link =  get_post_meta($post->ID,'calendar_link',true);
    $arr = array('id' => $postid, 'title' => $post_title, 'start' => $startDate, 'end' => $endDate, 'url' => $link);
    $posts[] = $arr;
}
echo json_encode($posts);

我想这应该行得通

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12013952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档