3 回答

TA贡献1877条经验 获得超1个赞
其他两个正确答案的替代方法,但无需手动设置数组索引或使用任何临时变量:
$arr = [];
foreach($items as $item) {
$arr[] = [
'ProductGuid' => $item->guid,
'BaseAmountValue' => $item->price,
'Quantity' => $item->qty,
'Discount' => $item->discount,
'AccountNumber' => 1000,
'Unit' => 'parts',
];
}

TA贡献1802条经验 获得超5个赞
使用给定的代码,您可以在该循环的每一行中在数组中创建新的内部行。下面的代码将解决这个问题:
$arr = array();
foreach($items as $item) {
$mappedItem = [];
$mappedItem['ProductGuid'] = $item->guid;
$mappedItem['BaseAmountValue'] = $item->price;
$mappedItem['Quantity'] = $item->qty;
$mappedItem['Discount'] = $item->discount;
$mappedItem['AccountNumber'] = 1000;
$mappedItem['Unit'] = 'parts';
$arr[] = $mappedItem;
}

TA贡献1854条经验 获得超8个赞
你相当接近这样做的一种方式......
解释:
$arr[]['ProductGuid'] = $item->guid;
^^
\= Next numeric array key.
这样做是在下一个productGuid数字外部数组上设置键,因此实际上您实际设置的是:
$arr[0]['ProductGuid'] = $item->guid;
$arr[1]['BaseAmountValue'] = $item->price;
$arr[2]['Quantity'] = $item->qty;
$arr[3]['Discount'] = $item->discount;
$arr[4]['AccountNumber'] = 1000;
$arr[5]['Unit'] = 'parts';
这显然不是你想要的。
一种解决方案:
因此,您必须在循环的每次迭代中设置数组键值foreach。
一种方法是手动设置迭代器整数键值:
$arr = [];
$x = 0;
foreach($items as $item) {
$arr[$x]['ProductGuid'] = $item->guid;
$arr[$x]['BaseAmountValue'] = $item->price;
$arr[$x]['Quantity'] = $item->qty;
$arr[$x]['Discount'] = $item->discount;
$arr[$x]['AccountNumber'] = 1000;
$arr[$x]['Unit'] = 'parts';
$x++; // +1 to value of $x
}
- 3 回答
- 0 关注
- 155 浏览
添加回答
举报