首页 > 解决方案 > PHP JSON 循环遍历标记为 ARRAY[0]、ARRAY[1] 等的嵌套数组

问题描述

我被发送循环阅读有关循环 JSON 数组的内容!

我已经解码了一个 JSON 字符串。它包含比萨饼的订单和客户信息。每个订单都在一个数组中,第一个称为 Array[0],第二个称为 Array[1],依此类推。在每个数组中有 [products],其中包含 Array[0] 和第一个披萨的详细信息,Array[1 ]与第二个等的细节。

我一生都无法弄清楚如何访问 [products] 数组中的值。

在 [products] 中,其中一个值是 JSON 字符串本身,但我还没有担心这一点!

Print_R 给了我这个:

数组 [0] => 数组([order_number] => 568

    [products] => Array ( [0] => Array ( 
                  [item_no] => 1 
                  [item_name] => Full Veggie Pizza
                  [qty] => 2 
                  [woofood_meta] => {"original_price":"9.0"} )
                  
                  [1] => Array ( 
                  [item_no] => 2
                  [item_name] => Full Veggie Pizza 
                  [qty] => 1 
                  [woofood_meta] => {"extra_options":{"Extras": 
                                   [{"id":61,"price":"\u00a30.50",
                                  
                  "price_float":0.5,"category":"Extras","name":"Jalape\u00f1os",
                                     
                   "hide_prices":false}]},"extra_options_price":0.5,"original_price":"9.0"} )
                  
                  [2] => Array ( 
                  [item_no] => 3
                  [item_name] => Full Veggie Pizza 
                  [qty] => 1 
                  [woofood_meta] => {"extra_options":{"Extras": 
                                    [{"id":57,"price":"\u00a30.50",
                                      "price_float":0.5,"category":"Extras","name":"Extra 
                                        veg 1)","hide_prices":false},
                                      

{"id":61,"price":"\u00a30.50","price_float":0.5,"category":"Extras","name":"Jalape\u00f1os","hide_prices":false}, { "id":62,"price":"\u00a30.00","price_float":0,"category":"Extras","name":"Chillies","hide_prices":false}]}, "additional_comments ":"菠萝","extra_options_price":1,"original_price":"9.0"} )

                  [3] => Array ( 
                  [item_no] => 4 
                  [item_name] => Pepperoni Pizza 
                  [qty] => 1 
                  [woofood_meta] => {"original_price":"8.50"} )  
                  
                  [date_to_deliver] => 2020-07-25 00:00 
                  [time_to_deliver] => 19:00 
                  [full_name] => Freda People 
                  [address] => 22 New St 
                  [city] => Newtown
                  [postcode] => NT6 6NT 
                  [phone] => 07123 456 789 
                  [email] => freda@gmail.com 
                  [customer_note] => Beware of the dog )
                  

Array [1] => Array( [order_number] => 569 //这就是下一组数组的开始

我可以回显所有名称和地址详细信息,但 [products] 数组中没有任何内容。

我的代码是:

                          $url = 'orders(1).json';
                          $jsonobj = file_get_contents($url);

                          $arr = json_decode($jsonobj, true);
            
         $element = $arr;
         
         foreach($arr as $element) {
             for($i=0;$i<count($element.products['$i']);$i++){
        echo $element ['order_number']; "<br>";
        echo $element ['products[$i].qty']; "<br>";
        echo $element ['products[$i].item_name']; "<br>";
        echo $element ['products[$i].woofood_meta.name']; "<br>";
        echo $element ['products[$i].woofood_meta.additional_comments']; "<br>";
        echo $element ['date_to_deliver']; "<br>";
        echo $element ['time_to_deliver']; "<br>";
        echo $element ['full_name']; "<br>";
                                 
                                                             } 
                                    } 

根据请求来自json的数组:

1234567890","email":"xx@yy.com","customer_note":"我们还在屏蔽。感谢你的帮助”} 1234567890","email":"xx@yy.com","customer_note":"我们还在屏蔽。感谢你的帮助”}

标签: phparraysjsonloops

解决方案


这似乎是缺乏使用数组的知识,所以让我们先回顾一下。

$arr = [0, 1, 2];

首先,数组索引为 0,这意味着长度为 3 的数组将具有索引的 0、1、2。因此,要访问第一条数据,我们需要输入索引 0。

$arr[0] = 0;

现在通常使用 API 和 JSON 数据会有所谓的嵌套数组:

$arr = [ 0, [ 1, 2 ] 3 ];

那么我们现在如何进入所有元素呢?好吧,我们只是应用相同的原则,首先访问初始索引,然后访问我们想要的数据的索引。前任:

$arr[1][0] = 1

首先,我们进入索引 1,这是我们的嵌套数组: [ 1, 2 ] 然后我们使用下一个括号来索引我们想要的数据。

这基本上就是索引数组的工作方式。

还有一个旁注,通常使用 foreach() 循环,您可以像这样格式化 JSON 数据中的键和值。

foreach ($arr as $key=>$value) {
  $_SESSION[$key] = $value;
}

我强烈建议练习并记下它,因为这只是大多数语言编程的核心概念。并将其应用于您当前的问题!


推荐阅读