简体   繁体   English

无法显示 JSON 嵌套 arrays 与 HTML 表和 PHP

[英]Can't display JSON nested arrays with HTML table and PHP

I am trying to display the table that shows the latest vaccination data in each country.我正在尝试显示显示每个国家/地区最新疫苗接种数据的表格。 I managed to pull out the list of countries, but I could not display the nested arrays of the latest data, total vaccinated, and total vaccinations per hundred.我好不容易拉出国家列表,但是无法显示最新数据嵌套的arrays,接种总数,每百人接种总数。

I want to display the array of total_vaccinations and total_vaccinations_per_hundred that contains the latest date value from date .我想显示total_vaccinationstotal_vaccinations_per_hundred的数组,其中包含 date 的最新date值。

I am open to using jQuery and Javascript to make this work.我愿意使用 jQuery 和 Javascript 来完成这项工作。

Here is the small section of the JSON data.这是 JSON 数据的一小部分。 The original data is here: https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/vaccinations/vaccinations.json原始数据在这里: https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/vaccinations/vaccinations.json

Array
(
    [0] => Array
        (
            [country] => Afghanistan
            [iso_code] => AFG
            [data] => Array
                (
                    [0] => Array
                        (
                            [date] => 2021-02-22
                            [total_vaccinations] => 0
                            [people_vaccinated] => 0
                            [total_vaccinations_per_hundred] => 0
                            [people_vaccinated_per_hundred] => 0
                        )

                    [1] => Array
                        (
                            [date] => 2021-02-23
                            [daily_vaccinations] => 1367
                            [daily_vaccinations_per_million] => 35
                        )

                    [2] => Array
                        (
                            [date] => 2021-02-24
                            [daily_vaccinations] => 1367
                            [daily_vaccinations_per_million] => 35
                        )

                    [3] => Array
                        (
                            [date] => 2021-02-25
                            [daily_vaccinations] => 1367
                            [daily_vaccinations_per_million] => 35
                        )

                    [4] => Array
                        (
                            [date] => 2021-02-26
                            [daily_vaccinations] => 1367
                            [daily_vaccinations_per_million] => 35
                        )

                    [5] => Array
                        (
                            [date] => 2021-02-27
                            [daily_vaccinations] => 1367
                            [daily_vaccinations_per_million] => 35
                        )

                    [6] => Array
                        (
                            [date] => 2021-02-28
                            [total_vaccinations] => 8200
                            [people_vaccinated] => 8200
                            [daily_vaccinations] => 1367
                            [total_vaccinations_per_hundred] => 0.02
                            [people_vaccinated_per_hundred] => 0.02
                            [daily_vaccinations_per_million] => 35
                        )

                    [7] => Array
                        (
                            [date] => 2021-03-01
                            [daily_vaccinations] => 1580
                            [daily_vaccinations_per_million] => 41
                        )

                    [8] => Array
                        (
                            [date] => 2021-03-02
                            [daily_vaccinations] => 1794
                            [daily_vaccinations_per_million] => 46
                        )

                    [9] => Array
                        (
                            [date] => 2021-03-03
                            [daily_vaccinations] => 2008
                            [daily_vaccinations_per_million] => 52
                        )

                    [10] => Array
                        (
                            [date] => 2021-03-04
                            [daily_vaccinations] => 2221
                            [daily_vaccinations_per_million] => 57
                        )

                    [11] => Array
                        (
                            [date] => 2021-03-05
                            [daily_vaccinations] => 2435
                            [daily_vaccinations_per_million] => 63
                        )

                    [12] => Array
                        (
                            [date] => 2021-03-06
                            [daily_vaccinations] => 2649
                            [daily_vaccinations_per_million] => 68
                        )

                    [13] => Array
                        (
                            [date] => 2021-03-07
                            [daily_vaccinations] => 2862
                            [daily_vaccinations_per_million] => 74
                        )

                    [14] => Array
                        (
                            [date] => 2021-03-08
                            [daily_vaccinations] => 2862
                            [daily_vaccinations_per_million] => 74
                        )

                    [15] => Array
                        (
                            [date] => 2021-03-09
                            [daily_vaccinations] => 2862
                            [daily_vaccinations_per_million] => 74
                        )

                    [16] => Array
                        (
                            [date] => 2021-03-10
                            [daily_vaccinations] => 2862
                            [daily_vaccinations_per_million] => 74
                        )

                    [17] => Array
                        (
                            [date] => 2021-03-11
                            [daily_vaccinations] => 2862
                            [daily_vaccinations_per_million] => 74
                        )

                    [18] => Array
                        (
                            [date] => 2021-03-12
                            [daily_vaccinations] => 2862
                            [daily_vaccinations_per_million] => 74
                        )

                    [19] => Array
                        (
                            [date] => 2021-03-13
                            [daily_vaccinations] => 2862
                            [daily_vaccinations_per_million] => 74
                        )


Small snipped of the HTML/PHP table HTML/PHP 表格的小片段


    <div class="container my-3 text-center">
      <h2 class="display-6">Vaccine Live Data</h2>
      <table class="table sortable" id="table" data-toggle="table">
        <thead class="table-dark">
          <tr>
            <th scope="col">Countries</th>
            <th scope="col">Last Updated</th>
            <th scope="col">Total vaccinated</th>
            <th scope="col">Total Vaccinated Per Hundred</th>

          </tr>
        </thead>

        <tbody>
          <?php
                        foreach($data as $key => $info){
                    ?>
            <tr>
              <th class="sorttable_nosort">
                <?php echo $info['country']; ?>
              </th>

              <td data-order='desc' data-field="firstdose" data-sortable="true">
                <?php foreach($info['data'] as $key => $value) {  echo $value['date'];
     } ?>
              </td>

            </tr>

            <?php } ?>
        </tbody>



      </table>
    </div>

The current table output: image here当前表output:图片在这里

Try something like this, is not finished.试试这样的,还没完。 but you can take an idea.但你可以考虑一下。 Basically this script takes the last array of the country and display it, assuming that is the last updated.基本上这个脚本获取国家的最后一个数组并显示它,假设这是最后更新的。 You can sort it with js table.你可以用js表排序。

<div class="container my-3 text-center">
<h2 class="display-6">Vaccine Live Data</h2>
<table class="table sortable" id="table" data-toggle="table">
<thead class="table-dark">
    <tr>
    <th scope="col">Countries</th>
    <th scope="col">Last Updated</th>
    <th scope="col">Total vaccinated</th>
    <th scope="col">Total Vaccinated Per Hundred</th>
    <th scope="col">People Vaccinated Per Hundred</th>

    </tr>
</thead>

<tbody>
    <?php foreach($data as $key => $info){
        $last_array = end($info["data"]);
    ?>
    <tr>
        <td class="sorttable_nosort">
        <?php echo $info['country']; ?>
        </td>
        <td data-order='desc' data-field="firstdose" data-sortable="true">
            <?=$last_array["date"]?>
        </td>
        <td data-order='desc' data-field="firstdose" data-sortable="true">
            <?=$last_array["total_vaccinations"]?>
        </td>
        <td data-order='desc' data-field="firstdose" data-sortable="true">
            <?=$last_array["total_vaccinations_per_hundred"]?>
        </td>
        <td data-order='desc' data-field="firstdose" data-sortable="true">
            <?php
            if($last_array["people_vaccinated_per_hundred"]){
                echo $last_array["people_vaccinated_per_hundred"];
            }else{
                echo 'No data available';
            }
            ?>
        </td>

    </tr>

    <?php } ?>
</tbody>



</table>

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM