我有一个目前看起来像这样的PHP函数
function renderJson(PageArray $items) {
$myData = array();
$myData['title'] = [];
$myData['url'] = [];
// cycle through all the items
foreach($items as $item) {
array_push($myData["title"],$item->title);
array_push($myData["url"],$item->url);
}
return json_encode($myData);
}
它目前在此形状中用作输出
{"title":["A","B"],"url":["A","B"]}
但这正是我想要实现的目标
{"title":["A"],"url":["A"]},{"title":["B"],"url":["B"]}
我试图将其作为JSON编码返回。$ item-> title和$ item-> url返回一个字符串。任何帮助都会很棒。
答案 0 :(得分:2)
现在你明白了:
{"title":["A","B"],"url":["A","B"]}
但你想要这个:
{"title":["A"],"url":["A"]},{"title":["B"],"url":["B"]}
你想要的是添加一个新的"项目"每次循环,每个项目都有一个标题和一个网址。现在你返回一个包含2个子数组的数组:一个用于标题,一个用于url。
尝试这种方式:
function renderJson(PageArray $items) {
// Your result array
$myData = array();
// cycle through all the items
foreach($items as $item) {
// Each time you loop, you add a new array in your main array with a title and an URL
$myData[] = array(
"title" => $item->title,
"url" => $item->url
);
}
return json_encode($myData);
}
我使用了[]
因为他做了你需要的东西:在主阵列的末尾推送元素。这是使用array_push()
的简短方法。以下是有关详细信息的文档:http://php.net/manual/en/function.array-push.php
输出将是:
[{"title":["A"],"url":["A"]},{"title":["B"],"url":["B"]}]
答案 1 :(得分:1)
您想要返回的内容当然不是有效的json。此时返回一个包含这两个对象的数组(即将整个$item
推送到$myData
)
function renderJson(PageArray $items) {
$myData = array();
// cycle through all the items
foreach($items as $item) {
array_push($myData,['title' => $item->title, 'url' => $item->url]);
}
return json_encode($myData);
}
以
的形式为您提供了一些东西[{"title":"A","url":"A"},{"title":"B","url":"B"}]
答案 2 :(得分:0)
您可以通过逗号连接JSON来创建无效的JSON。要么让你的客户端(说json数据的接收者)用逗号分割结果,然后自己解析每个JSON。
否则你可以创建一个“大”的JSON字符串,包含你的JSON数据(或者如果有更多的话)。
只需在PHP中创建一个数组,为每个JSON数据添加一个新元素,然后在json_encode()中添加它,然后通过客户端循环遍历它。
你最终会使用什么,并不重要,但我会在第一种方法中使用第二种方法,因为它更清洁。