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 關注
- 137 瀏覽
添加回答
舉報