Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP JSON通过标记为数组[0]、数组[1]等的嵌套数组循环_Php_Arrays_Json_Loops - Fatal编程技术网

PHP JSON通过标记为数组[0]、数组[1]等的嵌套数组循环

PHP JSON通过标记为数组[0]、数组[1]等的嵌套数组循环,php,arrays,json,loops,Php,Arrays,Json,Loops,我正在阅读有关JSON数组循环的文章 我已经解码了一个JSON字符串。它包含比萨饼订单和客户信息。每个顺序都在一个数组中,第一个称为数组[0],第二个称为数组[1],等等。 在每个数组中都有[products],其中包含带有第一个比萨饼详细信息的数组[0],以及带有第二个比萨饼详细信息的数组[1],等等 我一辈子都不知道如何访问[products]数组中的值 在[products]中,其中一个值是JSON字符串本身,但我根本不担心这一点 Print\R为我提供了以下信息: 数组[0]=>数组[o

我正在阅读有关JSON数组循环的文章

我已经解码了一个JSON字符串。它包含比萨饼订单和客户信息。每个顺序都在一个数组中,第一个称为数组[0],第二个称为数组[1],等等。 在每个数组中都有[products],其中包含带有第一个比萨饼详细信息的数组[0],以及带有第二个比萨饼详细信息的数组[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,价格:\u00a30.50,价格浮动:0.5,类别:附加,名称:Jalape\u00f1os,隐藏价格:false}, {id:62,price:\u00a30.00,price\u float:0,category:Extras,name:Chillies,hide\u prices:false}]}, 附加注释:菠萝,附加选项价格:1,原价: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中的数组:


[{订单编号:573,产品:[{项目编号:1,项目名称:那不勒斯比萨饼,数量:1,woofood\u meta:{原价:9.50},{项目编号:2,项目名称:玛格丽塔比萨饼,数量:1,woofood\u meta:{额外选项:{额外选项:[{id:59,价格:\u00a31.00,价格浮动:1,类别:额外,名称:额外奶酪1,隐藏价格:假]},额外选项:1,额外选项,原价:7},{项目编号:3,项目名称:奶酪蒜蓉面包v,数量:1,woofood\u meta:{原价:4.5}],交货日期:2020-07-31 00:00,交货时间:19:00,全名:XXXX XXXX,地址:zzzzzz,城市:vvvvv,邮编:123456,电话:1234567890,电子邮件:xx@yy.com,客户注:我们仍在屏蔽。感谢您的帮助}

这似乎是因为缺乏使用阵列的知识,因此让我们首先回顾一下这一点

$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;
}

我强烈建议大家练习并记下来,因为这只是大多数语言编程的核心概念。把这一点应用到您当前的问题上吧!

一句忠告:忽略这是来自JSON的事实,学习访问PHP数组的基础知识。共享一个JSON示例,这样我们就可以帮助您在OP中找到打印内容,试图在此处发布一行,但太长。@Anthony请始终将您的数组/对象数据显示为var_导出输出或json字符串-这样志愿者可以立即将您的样本数据复制粘贴到他们的测试环境中,并着手解决您的问题。当您使用print_r或var_dump时,志愿者必须浪费时间进行准备将数据转换成可以运行代码的内容。不必为不知道这一点而道歉,我只是帮助您理解如何编写更清晰的问题并更快地获得更好的支持。粘贴到问题中后,突出显示文本,然后按Ctrl+K。我已在操作中添加了一行。感谢大家的提醒!感谢提供示例s、 这真的很有帮助。我知道我需要学习数组,而不是专注于JSON!我做到了!谢谢你的帮助。结合你的迷你教程和我最后得到的stackslaves代码片段。@AnthonyNewall很高兴听到这个消息!这可能是粗略的调试或学习新概念,但最终总会有回报的。