输出JSON数组追加附加元素PHP
I'm pretty sure I'm quite close so hopefully quick answer.
I'm able to generate this JSON:
apps: [
{
0: {
PublisherCount: "7"
},
Id: "87",
AppName: "Productivity, Focus, Habits & Life Success by Audiojoy",
AppBundle: "productivitymind"
}
]
But I'm trying to get to:
apps: [
{
Id: "87",
AppName: "Productivity, Focus, Habits & Life Success by Audiojoy",
AppBundle: "productivitymind",
PublisherCount: "7"
}
]
Here is my output loop (I think the issue is in the 5th row where I array_push the new value for PublisherCount
. It creates an additional node instead of adding it to the end.
$temp_array = array();
$i = 0;
while ($row = mysqli_fetch_assoc($publisher_apps)) {
$temp_array[] = $row;
$temp_array[$i][] = fetch_all(get_publisher_count_by_app_id($row['Id']))[0];
$i++;
}
$publisher_apps = $temp_array;
$result = array("apps"=>$publisher_apps);
output_json($result);
Thanks.
我很确定我非常接近所以希望快速回答。 p> 我能够生成这个JSON: p>
apps:[
{
0:{
PublisherCount:“7”
},
Id :“87”,
AppName:“Audiojoy的生产力,专注,习惯和生活成功”,
AppBundle:“productivitymind”
}
code> pre>
但我正试图去: p>
apps:[
{
Id:“87”,
AppName:“生产力,专注,习惯 & Life Success by Audiojoy“,
AppBundle:”productivitymind“,
PublisherCount:”7“
}
]
code> pre>
这是我的输出 循环(我认为问题出在第5行,我在其中array_push PublisherCount code>的新值。它创建了一个额外的节点,而不是将其添加到最后。 p>
$ temp_array = array();
$ i = 0;
while($ row = mysqli_fetch_assoc($ publisher_apps)){
$ temp_array [] = $ row;
$ temp_array [$ i] [ ] = fetch_all(get_publisher_count_by_app_id($ row ['Id']))[0];
$ i ++;
}
$ publisher_apps = $ temp_array;
$ result = array(“apps”=> ; $ publisher_apps);
output_json($ result);
code> pre>
谢谢。 p>
div>
You have rows like this:
['Id' => "87",
'AppName' => "Productivity, Focus, Habits & Life Success by Audiojoy",
'AppBundle' => "productivitymind"]
and fetch_all(get_publisher_count_by_app_id($row['Id']))[0]
returns an array like this:
['PublisherCount' => 7]
so when you append it with $temp_array[$i][]
, the entire array gets assigned to the 0
key of $temp_array[$i]
.
There are various different ways you could get just the PublisherCount
value. One way is to use array_merge
to combine the result of get_publisher_count_by_app_id
with $row
, and then add the modified $row
to your main array.
while ($row = mysqli_fetch_assoc($publisher_apps)) {
$count = fetch_all(get_publisher_count_by_app_id($row['Id']))[0];
$temp_array[] = array_merge($row, $count);
}
If you do it this way, $i
should become unneccessary.
Change it to this:
$temp_array = array();
while ($row = mysqli_fetch_assoc($publisher_apps)) {
$row['PublisherCount'] = fetch_all(get_publisher_count_by_app_id($row['Id']))[0]['PublisherCount'];
$temp_array[] = $row;
}
$publisher_apps = $temp_array;
$result = array("apps"=>$publisher_apps);
output_json($result);