php - 复杂多维数组
问题描述
我正在使用 API 来获取数据,它返回数组数组中的数据。现在我想获取我需要的数据并移动到一个新数组中。
$shipments = Array
(
[0] => Array
(
[AmazonOrderId] => 12321313
[SellerOrderId] =>
[MarketplaceName] => Amazon.com
[PostedDate] => 2018-10-01T14:21:46Z
[ShipmentItemList] => Array
(
[0] => Array
(
[SellerSKU] => 12-12321-1231
[OrderItemId] => 1212313
[QuantityShipped] => 1
[ItemChargeList] => Array
(
[0] => Array
(
[ChargeType] => Principal
[Amount] => 6.95
[CurrencyCode] => USD
)
[1] => Array
(
[ChargeType] => Principal
[Amount] => 6.95
[CurrencyCode] => USD
)
)
)
)
)
)
我想从最里面的数组中获取金额。但是我无法遍历所有嵌套数组并且找不到解决方案。我可以通过这段代码得到我想要的值。但它得到 1,我需要动态数据。
function myfunction($products, $field, $value)
{
foreach($products as $key => $product)
{
if ( $product[$field] === $value )
return $key;
var_dump($product[$field][0]['ItemChargeList'][0]['Amount']);
}
return false;
}
我也尝试遍历所有数组,但它看起来很乱。
if($shipment){
foreach($shipment as $shiptmentList){
foreach($shiptmentList as $key => $shiporder){
foreach($shiporder as $key => $itemcharge){
foreach($itemcharge as $key=> $eachcharge){
var_dump($eachcharge[0]['Amount']);
}
}
}
}
}
请告诉我什么是迭代项目并获得所需金额的正确方法。谢谢
解决方案
如果数据的结构是一致的,你可以使用这样的东西:
foreach($shipments as $shipment)
foreach($shipment["ShipmentItemList"] as $itemList)
foreach($itemList["ItemChargeList"] as $chargedItem) {
echo $chargedItem["Amount"];
echo print_r($chargedItem);
}
推荐阅读
- c# - 在旧版非 MEF 组件中使用 Visual Studio 编辑器服务
- reactjs - React,Firebase - signInWithEmailAndPassword - 不能在 .then() 块之外使用用户变量
- html - HTML 模型查看器始终允许即时交互在移动设备上不起作用
- sre - 谷歌如何运行生产系统——SRE 的“50% 的项目工作时间”到底是什么?
- google-my-business-api - 查找 Google My Business API 请求的来源
- c# - 类列表对象的方法
- swiftui - 为根 NavigationView 应用基于 HorizontalSizeClass 的 navigationStyle 并保留导航堆栈
- c# - 如何使用 SelectionMode="Extended" 在 MVVM 中设置所选项目?
- android - 在 android 4.2.2 上运行的 android 模拟器上未显示通知
- javascript - (Zapier 编写的代码)从 Javascript 中的多个 if 语句返回值列表