【问题标题】:How to display nested JSON data in PHP如何在 PHP 中显示嵌套的 JSON 数据
【发布时间】:2020-05-18 21:45:12
【问题描述】:

这是我的 JSON

{"status":1,"error":0,"packet_list":[{"booked_packet_id":"22597002","booking_date":"29\/01\/2020","track_number":"LE782095573","track_number_short":"782095573","booked_packet_weight":"500","arival_dispatch_weight":"947","booked_packet_vol_weight_w":"0","booked_packet_vol_weight_h":null,"booked_packet_vol_weight_l":null,"booked_packet_no_piece":"1","booked_packet_collect_amount":"0.00","booked_packet_order_id":"Clothes","origin_country_name":"PAKISTAN\r","origin_city_name":"LAHORE","destination_city_name":"KARACHI","invoice_number":"IBLE5027089","invoice_date":"2020-02-18","shipment_name_eng":"Printed Mobile Covers","shipment_email":"hello@covers.pk","shipment_phone":"03038518000","shipment_address":"HOUSE # 310 KAMRAN BLOCK ALLAMA IQBAL TOWN LAHORE","consignment_name_eng":"Umer Shabbir","consignment_email":null,"consignment_phone":"03312394595","consignment_phone_two":"0","consignment_phone_three":"0","consignment_address":"Ali Garh Bakery, PIB Colony near Jama Masjid Karachi","special_instructions":"Clothes Shahnaz Khala","booked_packet_status":"Delivered","status_remarks":"Array\/Array","Tracking Detail":[{"Status":"Shipment picked in LAHORE MAIN CITY","Activity_Date":"2020-01-29","Activity_Time":"22:50:57","Activity_datetime":"2020-01-29 22:50:57"},{"Status":"Dispatched to KHI MAIN OFFICE","Activity_Date":"2020-01-29","Activity_Time":"23:52:36","Activity_datetime":"2020-01-29 23:52:36"},{"Status":"Arrived at Station in KARACHI LOCAL","Reciever_Name":null,"Activity_Date":"2020-01-30","Activity_Time":"13:59:00","Reason":null,"Activity_datetime":"2020-01-30 13:59:00"},{"Status":"Assigned to courier in KARACHI LOCAL","Reciever_Name":null,"Activity_Date":"2020-01-31","Activity_Time":"08:33:12","Reason":null,"Activity_datetime":"2020-01-31 08:33:12"},{"Status":"Delivered","Reciever_Name":"UMER","Activity_Date":"2020-01-31","Activity_Time":"10:44:33","Reason":"SELF","Activity_datetime":"2020-01-31 10:44:33"}]}]}

这是我通过在线工具获得的 JSON 美化结果

这是我用来回显数据的 php 代码

foreach ($arr['packet_list'] as $a){
    echo '<strong>Courier Name: </strong> Leopards Courier';
    echo '<br>';
    echo '<strong>Tracking #: </strong>' . $a['track_number'];
    echo '<br>';
    echo '<strong>Current Status: </strong>' . $a['booked_packet_status'];
    echo '<br>';
    echo '<br>';
    echo '<strong>Booking Date: </strong>' . $a['booking_date'];
    echo '<br>';
    echo '<strong>Customer Name: </strong>' . $a['consignment_name_eng'];
    echo '<br>';
    echo '<strong>Destination City: </strong>' . $a['destination_city_name'];
    echo '<br>';
    echo '<br>';
}

foreach ($arr['Tracking Detail'] as $b){
    echo '<strong>Status: </strong>' . $b['Status'];
}

“packet_list”循环返回一切完美,但错误是“跟踪详细信息”没有返回任何内容。我想在跟踪详细信息中显示所有可用数据。如何做到这一点?

谢谢

【问题讨论】:

    标签: php html json


    【解决方案1】:

    Tracking Detail 不在$arr['Tracking Detail']。它位于$arr['packet_list'][0,1,2...]['Tracking Detail'],即。它是每个数据包数组下的子数组。对于在每个数据包后输出跟踪详细信息的最简单解决方案,请使用您的代码,嵌套循环如下:

    foreach ($arr['packet_list'] as $a){
        echo '<strong>Courier Name: </strong> Leopards Courier';
        echo '<br>';
        echo '<strong>Tracking #: </strong>' . $a['track_number'];
        echo '<br>';
        echo '<strong>Current Status: </strong>' . $a['booked_packet_status'];
        echo '<br>';
        echo '<br>';
        echo '<strong>Booking Date: </strong>' . $a['booking_date'];
        echo '<br>';
        echo '<strong>Customer Name: </strong>' . $a['consignment_name_eng'];
        echo '<br>';
        echo '<strong>Destination City: </strong>' . $a['destination_city_name'];
        echo '<br>';
        echo '<br>';
    
        // Notice how we're using **$a**['Tracking Detail'] here.
        foreach ($a['Tracking Detail'] as $b){
            echo '<strong>Status: </strong>' . $b['Status'];
        }
    }
    

    【讨论】:

    • 您能否帮我回显此屏幕截图中的可用数据:i.imgur.com/ijpvLCY.png ...我需要在 TrackInfo 和 DeliveryInfo 中回显数据...谢谢
    • 您遇到了什么困难?请先尝试 - 了解您的数据结构 - 让我们知道出了什么问题。
    【解决方案2】:

    您的结构与您的代码不匹配。在您的 json 中移动 Tracking Detail 或调整您的代码以循环 $arr['packet_list']['Tracking Detail']。

    【讨论】:

    • 那不行,你需要 $arr['packet_list'][0]['Tracking Detail'] 等等。注意数据的结构:[packet_list] =&gt; [ [0] =&gt; [ [booked_packet_id] =&gt; 22597002 ... [Tracking Detail] =&gt; [...
    猜你喜欢
    • 2021-10-31
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2015-12-21
    相关资源
    最近更新 更多