我正在尝试将一个元素添加到数组中,并保持所有现有元素不变。目前,每当我添加时,它只会将原始数组更改为添加的元素。
我的代码如下:
public $items = [];
public function addProduct($singleProduct, $quantity)
{
$this->items[count($items)] = $singleProduct;
}添加当我尝试转储它们时,即使我添加了多个元素,它也只显示一个元素。返回数组中当前项的函数:
public function getItems()
{
return $this->items;
}我将通过以下方式添加项目:
if (isset($_POST["add"])){
$productToAdd = $productsFromDB->findProduct($_GET["id"]);
$newCartItem= $cart->addProduct($productToAdd, $_POST["quantity"]);
echo $cart->getItems();发布于 2021-03-18 00:21:37
您初始化了一个$items空数组,但从未使用给定的$item数组设置过您的$this->item。你在路上失去了一些东西。
你应该先初始化购物车
$cart = new Cart();
$items = $cart->getItems();假设addProduct()函数是一个购物车方法,修改您的数组。
$cart->addProduct($product, $quantity);addProduct可能返回$cart本身或为空
# retuen the object
function addProduct($product, $quantity)
{
$this->items[] = $product;
return $this;
}
$cart = $cart->addProduct($prod, $qty);
#return nothing
function addProduct($product, $quantity)
{
$this->items[] = $product;
return $this;
}
$cart->addProduct($prod, $qty);假设您的product ojb有一个id getter,那么使用productId作为给定产品的数组键可能会有更多的好处。大概是这样的:
public function addProduct($singleProduct, $quantity)
{
$productId = $singleProduct->getId();
$this->items[productId] = $singleProduct;
}您可以以更好的方式获得prodcut,并且可以解决数组键的问题。
https://stackoverflow.com/questions/66676049
复制相似问题