php - 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":"我们还在屏蔽。感谢你的帮助”}
解决方案
这似乎是缺乏使用数组的知识,所以让我们先回顾一下。
$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;
}
我强烈建议练习并记下它,因为这只是大多数语言编程的核心概念。并将其应用于您当前的问题!
推荐阅读
- git - 执行 git svn clone 命令时出现“命令返回错误:127”
- stored-procedures - DBMS 是否以存储过程的形式在 DBMS 服务器上保存来自准备好的语句的编译查询?
- java - 自动分区/批处理大型 Spring Data JPA 子句
- pandas - 使用 svd 求解欠定的 scipy.sparse 矩阵
- c++ - 如何填充包含指针数组的结构数组
- ruby-on-rails - 参数数量错误(给定 1,预期为 0)
- c# - 为什么go1没有价值
- javascript - 如何使复选框禁用?
- c# - Gzip 压缩中间件在 asp.net core 2.0 中不起作用
- oracle-apex-5.1 - 操作面包屑栏内容