PHP JSON通过标记为数组[0]、数组[1]等的嵌套数组循环
我正在阅读有关JSON数组循环的文章 我已经解码了一个JSON字符串。它包含比萨饼订单和客户信息。每个顺序都在一个数组中,第一个称为数组[0],第二个称为数组[1],等等。 在每个数组中都有[products],其中包含带有第一个比萨饼详细信息的数组[0],以及带有第二个比萨饼详细信息的数组[1],等等 我一辈子都不知道如何访问[products]数组中的值 在[products]中,其中一个值是JSON字符串本身,但我根本不担心这一点 Print\R为我提供了以下信息: 数组[0]=>数组[order_number]=>568PHP 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
[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很高兴听到这个消息!这可能是粗略的调试或学习新概念,但最终总会有回报的。