如何在php中将数组编码为JSON对象?

3

我的代码看起来像:

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
}

$bcData数组输出(使用print_r):

Array ( 
    [0] => Array ( [title] => Pink Nail Shop 9 ) 
    [1] => Array ( [title] => Pink Nail Shop 8 ) 
)

当我使用json_encode对这个数组进行编码时,新创建的JSON看起来像:
[{"title":"Pink Nail Shop 9"},{"title":"Pink Nail Shop 8"}]

我需要的 JSON 格式如下:

[{"shop":{"title":"Pink Nail Shop 9"}},{"shop":{"title":"Pink Nail Shop 8"}}]

希望我说的清楚,因为我已经尽力表达我想要实现的目标。

谢谢!


3
你需要将追加的数组嵌套在另一个键名为"shop"=>的数组中。 - mario
2
如果您的PHP数据结构不匹配,为什么会期望输出该输出结果呢? - elclanrs
我需要将它与一些JavaScript插件一起使用,其中我需要相同的结构。 - Imran
2个回答

6
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
}

它只输出:[{"shop":{"title":"Pink Nail Shop 9"}}],它在一个循环内部。 - Imran
顺便说一句,miguelcaires的答案是正确的,它可以按照我想要的方式工作。 - Imran
@Imran,你在测试我的代码吗?我的代码结果是:[{"shop":{"title":"Test 0"}},{"shop":{"title":"Test 1"}},{"shop":{"title":"Test 2"}}]。你的问题是另外一个。 - DJafari
1
@Imran 没有问题,如果您的问题仍然存在,请编辑您的问题并完整添加您的源代码。 - DJafari
让我们在聊天中继续这个讨论 - Imran

0

你尝试过了吗:

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

你有吗?你的代码中索引“shop”的位置不正确。 - Sven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接