【发布时间】:2020-12-14 19:35:13
【问题描述】:
我正在读取一个“父”数组,并根据我在该父数组的子数组中读取的一些值创建一个新的子数组。即我将子数组中“产品”的数量相加以创建一个新的子数组。 新子数组正在正确创建,但不是在相应的父数组元素中创建新子数组,我的逻辑是将所有新子数组放在父数组的第一个元素中。请帮忙。
foreach ($orders as $order) {
$orderResource = new OrderResource(Order::findOrFail($order['id']));
$ordersAll[] = $orderResource;
foreach (($orderResource['products']) as $product) {
if (array_key_exists($product['productType'],$product_array)) {
// array_push($product_array, $product['productType']);
$product_array[$product['productType']] += (int)$product['quantity'];
}
else $product_array[$product['productType']] = (int)$product['quantity'];
}
$ordersAll['product'][]= $product_array;
$product_array=[];
}
结果:不是在每个数组元素中都有一个新的“产品”数组,而是它们都在索引 0 中。
array:22 [▼
0 => array:9 [▶]
"product" => array:21 [▶]
1 => array:9 [▶]
2 => array:9 [▶]
3 => array:9 [▶]
4 => array:9 [▶]
5 => array:9 [▶]
6 => array:9 [▶]
7 => array:9 [▶]
8 => array:9 [▶]
9 => array:9 [▶]
10 => array:9 [▶]
11 => array:9 [▶]
12 => array:9 [▶]
13 => array:9 [▶]
14 => array:9 [▶]
15 => array:9 [▶]
16 => array:9 [▶]
17 => array:9 [▶]
18 => array:9 [▶]
19 => array:9 [▶]
20 => array:9 [▶]
]
所以,我希望每个数组索引都包含一个新的“product_sum”数组。这将包含找到的所有产品类型的键值和“数量”的总和。
当前:
0 => array:9 [▼
"refId" => "8e24cc331a73002b0c2da4bc7a62c647"
"Currency" => "USD"
"Symbol" => "$"
"Amount" => "315.50"
"created_at" => "2020-12-08T03:32:09.000000Z"
"updated_at" => "2020-12-08T03:32:09.000000Z"
"legs" => array:2 [▶]
"travellers" => array:3 [▶]
"products" => array:3 [▼
0 => array:13 [▶]
1 => array:13 [▶]
2 => array:13 [▶]
]
]
我所追求的是(在每个父数组索引中):
0 => array:9 [▼
"refId" => "8e24cc331a73002b0c2da4bc7a62c647"
"Currency" => "USD"
"Symbol" => "$"
"Amount" => "315.50"
"created_at" => "2020-12-08T03:32:09.000000Z"
"updated_at" => "2020-12-08T03:32:09.000000Z"
"legs" => array:2 [▶]
"travellers" => array:3 [▶]
"products" => array:3 [▼
0 => array:13 [▶]
1 => array:13 [▶]
2 => array:13 [▶]
"product_sum" => array:1 [▼
0 => array:2 [▼
"ticket" => 5
"bag" => 1
【问题讨论】:
-
你在那个输出中倾倒了什么?还有为什么
$ordersAll['product'][]= $product_array;? -
如果您想要在每个数组元素($ordersAll)中添加一个新的产品数组,那么您可能需要执行
$product['product'][] = $product_array,因为 $product 是 foreach 循环中数组的单个元素