输出JSON数组追加附加元素PHP

时间:2017-02-13 23:28:27

标签: php arrays json loops

我很确定我非常接近所以希望快速回答​​。

我能够生成这个JSON:

apps: [
    {
        Id: "87",
        AppName: "Productivity, Focus, Habits & Life Success by Audiojoy",
        AppBundle: "productivitymind",
        PublisherCount: "7"
    }
]

但我正试着去:

PublisherCount

这是我的输出循环(我认为问题出在第5行,我在其中array_push $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); 的新值。它创建了一个额外的节点,而不是将其添加到最后。

            /* Video CSS */
            .homepage-hero-module {
                border-right: none;
                border-left: none;
                position: relative;
                width: auto;
                height: 400px;
            }
            .no-video .video-container video,
            .touch .video-container video {
                display: none;
            }
            .no-video .video-container .poster,
            .touch .video-container .poster {
                display: block !important;
            }
            .video-container {
                position: absolute;
                bottom: 0%;
                left: 0%;
                height: 100%;
                width: 100%;
                overflow: hidden;

            .video-container .poster img {
                width: 100%;
                bottom: 0;
                position: absolute;
            }
            .video-container .filter {
                /*z-index: 100;*/
                position: absolute;
                background: rgba(0, 0, 0, 0.4);
                width: 100%;
            }
            .video-container video {
                position: absolute;
                /*z-index: 0;*/
                /*bottom: 0;*/
            }
            .video-container video.fillWidth {
                width: 100%;
                }

            #video_overlays {
            position:absolute;
            float:left;
                width:100%;
                height:400px;
                background-color:transparent;
                z-index:1;
            }

感谢。

2 个答案:

答案 0 :(得分:1)

你有这样的行:

['Id' => "87",
 'AppName' => "Productivity, Focus, Habits & Life Success by Audiojoy",
 'AppBundle' => "productivitymind"]

fetch_all(get_publisher_count_by_app_id($row['Id']))[0]返回如下数组:

['PublisherCount' => 7]

因此当您使用$temp_array[$i][]附加它时,整个数组将被分配到0的{​​{1}}键。

您可以通过各种不同方式获得$temp_array[$i]值。一种方法是使用PublisherCountarray_merge的结果与get_publisher_count_by_app_id相结合,然后将修改后的$row添加到主数组中。

$row

如果你这样做,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); } 应该是不必要的。

答案 1 :(得分:0)

将其更改为:

$temp_array = array();

while ($row = mysqli_fetch_assoc($publisher_apps)) {
  $row['PublisherCount'] = fetch_all(get_publisher_count_by_app_id($row['Id']))[0]['Pub‌​lisherCount'];
  $temp_array[] = $row;
}

$publisher_apps = $temp_array;

$result = array("apps"=>$publisher_apps);

output_json($result);