php - 1 个数组中带有 diff 键的数组
问题描述
就像问题说的那样,我有 2 个 foreach 循环,1 个循环迭代一个有 4 个键的数组,另一个循环有 3 个键的数组,如何仅在 1 中获得这两个数组?
我有这个
....
],
],
'Detalle' => array()
];
foreach ($datos["line_items"] as $line => $item) {
$tempArray = array(
'NmbItem' => $item['name'],
'QtyItem' => $item['quantity'],
'PrcItem' => $item['price'],
'IndExe' => 1
);
}
foreach($datos["fee_lines"] as $line => $fee){
$tempArray=array(
'NmbItem' => $fee['name'],
'QtyItem' => 1,
'PrcItem' => $fee['total']
);
}
$dte['Detalle'][] = $tempArray;
}
如果您注意到第二个数组循环不包含 'indexe' 键,则在 $dte['Detalle'][] = $tempArray 中分配此 tempArray 后仅适用于最后一个循环,或者如果我删除第二个循环,则第一个循环有效。
输出应该是这样的:
tempArray (array[0] 'NmbItem => name','QtyItem'=> 10,'PrcItem'= 1000,'IndExe' => 1 array[1] 'NmbItem => 另一个名字','QtyItem'=> 5 ,'PrcItem'=> 3000 )
谢谢你!
解决方案
要使其与您的代码一起使用,您还应该$dte['Detalle'][] = $tempArray;
在第一个循环之后添加。
问题是您$tempArray
在每个 foreach 中设置 ,因此在$dte['Detalle']
.
所以,这样的事情应该有效:
foreach ($datos["line_items"] as $line => $item) {
$tempArray = array(
'NmbItem' => $item['name'],
'QtyItem' => $item['quantity'],
'PrcItem' => $item['price'],
'IndExe' => 1
);
}
$dte['Detalle'][] = $tempArray;
foreach($datos["fee_lines"] as $line => $fee){
$tempArray=array(
'NmbItem' => $fee['name'],
'QtyItem' => 1,
'PrcItem' => $fee['total']
);
}
$dte['Detalle'][] = $tempArray;
但是,我会使用该array_map
功能来做到这一点。
你可以有这样的东西:
<?php
$data_1 = array_map(function($item){
return array(
'NmbItem' => $item['name'],
'QtyItem' => $item['quantity'],
'PrcItem' => $item['price'],
'IndExe' => 1
);
}, $datos["line_items"]);
$data_2 = array_map(function($fee){
return array(
'NmbItem' => $fee['name'],
'QtyItem' => 1,
'PrcItem' => $fee['total']
)
}, $datos["fee_lines"]);
$dte['Detalle'] = array_merge($dte['Detalle'], $data_1, $data_2);
推荐阅读
- c++ - 在 WSL2 上使用 Cuda 让我“没有可在设备上执行的内核映像”。
- mongodb - Mongo Cluster Primary 在副本模式下无响应
- python - Yelp 审核 API 响应
- javascript - React TypeScript 使用 Array.prototype.map 遍历充满对象的数组
- reactjs - 计时器在表 ReactJs 中未正确运行
- python - 机器人如何读取 robots.txt?
- excel - 在没有 VBA 的 Excel 中滚动 TTRPG 骰子?需要类似 FOR() 循环的东西
- spring-boot - KafkaTransactionManager 超时
- java - 如果用户第二次登录,使用 Firebase 打开不同的活动
- spring - 从 liquibase 生成生产 sql