为什么我的阵列没有更新。 让我们说我存放2件鞋子和衬衫,我得到这样的东西。
Array
(
[0] => Array
(
[item_id] => 1
[item_name] => shoes
[item_price] => 10
[item_quantity] => 10
)
[1] => Array
(
[item_id] => 2
[item_name] => Shirt
[item_price] => 5
[item_quantity] => 5
)
)
那没关系。但是,如果我将1和4传递给getItem函数,它会回应剩余的项目,在这种情况下为6,但如果我检查$ inventoryItems数组,它仍然说有10个鞋子。如果我再次传递1和4,它将得到相同的结果,6,但它应该返回2.
class Inventory{
public $inventoryItems = [];
public function storeItem($item){
$this->inventoryItems[] = [
'item_id' => $item->itemId,
'item_name' => $item->itemName,
'item_price' => $item->itemPrice,
'item_quantity' => $item->itemQuantity
];
}
public function inventoryList(){
print_r($this->inventoryItems);
}
public function getItem($itemId, $itemQuantity){
foreach($this->inventoryItems as $inventoryItem){
if($inventoryItem['item_id'] === $itemId && $inventoryItem['item_quantity'] > 0){
$inventoryItem['item_quantity'] -= $itemQuantity;
echo $inventoryItem['item_quantity'] . ' ' .
$inventoryItem['item_name'] . " remaining. \n";
}
}
}
}
答案 0 :(得分:1)
foreach($this->inventoryItems as $inventoryItem){
正在创建每个inventoryItem
的副本并将其存储在$inventoryItem
中。您可以将其更改为:
foreach($this->inventoryItems as &$inventoryItem){
获取对库存项目的引用,然后更改将在原始项目中进行。