如何在php中对数组中的JSON对象进行编码?

如何在php中对数组中的JSON对象进行编码?,php,javascript,json,Php,Javascript,Json,我的代码如下所示: if ( $query->have_posts() ) { $j = 1; while ( $query->have_posts() ) { $query->the_post(); $bcData[] = array( 'title'=>get_the_title(), ); $j++; } echo json_encode($bcData); } el

我的代码如下所示:

if ( $query->have_posts() ) {
    $j = 1; 
    while ( $query->have_posts() ) {
        $query->the_post();

        $bcData[] = array(
           'title'=>get_the_title(),
        );

$j++;
    }
echo json_encode($bcData);
} else {
    // no posts found
}
[{"title":"Pink Nail Shop 9"},{"title":"Pink Nail Shop 8"}]
$bcData
阵列输出(使用
print\r
):

当我将此数组编码为json(使用
json\u encode
)时,新创建的json如下所示:

if ( $query->have_posts() ) {
    $j = 1; 
    while ( $query->have_posts() ) {
        $query->the_post();

        $bcData[] = array(
           'title'=>get_the_title(),
        );

$j++;
    }
echo json_encode($bcData);
} else {
    // no posts found
}
[{"title":"Pink Nail Shop 9"},{"title":"Pink Nail Shop 8"}]
虽然我需要这样的json:

[{"shop":{"title":"Pink Nail Shop 9"}},{"shop":{"title":"Pink Nail Shop 8"}}]
希望这是有意义的,因为我一直在努力阐明我要实现的目标

谢谢

您是否尝试过:

if ( $query->have_posts() )
{
    $bcData = array();
    $j = 1; 
    while ( $query->have_posts() )
    {
        $query->the_post();

        $bcData[] = array(
            'shop' => array(
                'title'=>get_the_title()
            )
        );
        $j++;
    }
    echo json_encode($bcData);
} else {
    // no posts found
}
$bcData['shop'][] = array(
   'title'=>get_the_title(),
);
echo json_encode($bcData);

您需要将附加的数组嵌套在另一个数组中,并将
“shop”=>
作为键。如果您的PHP数据结构不匹配,为什么您会期望输出?我需要将其与一些JavaScript插件一起使用,而我需要相同的结构。您呢?索引“shop”位于代码中的错误位置。它只输出:[{“shop”:{“title”:“Pink Nail shop 9”}]它在一个循环中。顺便说一句,miguelcaires的答案是正确的,它可以按照我的要求工作。@Imran你在测试我的代码吗?我的代码结果是:
[{“shop”:{“title”:“Test 0”},{“shop”:{“title”:“Test 1”},{“shop”:{“title”:“Test 2”}]
您的问题是另一个问题,谢谢您的帮助。@Imran如果您的问题仍然存在,欢迎您编辑您的问题,并添加完整的源代码