首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP的Class对象中将元素添加到数组中?

如何在PHP的Class对象中将元素添加到数组中?
EN

Stack Overflow用户
提问于 2021-03-17 23:20:16
回答 1查看 48关注 0票数 1

我正在尝试将一个元素添加到数组中,并保持所有现有元素不变。目前,每当我添加时,它只会将原始数组更改为添加的元素。

我的代码如下:

代码语言:javascript
复制
 public $items = [];
 public function addProduct($singleProduct, $quantity)
    {
        
        $this->items[count($items)] = $singleProduct;
    }

添加当我尝试转储它们时,即使我添加了多个元素,它也只显示一个元素。返回数组中当前项的函数:

代码语言:javascript
复制
public function getItems()
    {
        return $this->items;
    }

我将通过以下方式添加项目:

代码语言:javascript
复制
if (isset($_POST["add"])){

        $productToAdd = $productsFromDB->findProduct($_GET["id"]);
        $newCartItem= $cart->addProduct($productToAdd, $_POST["quantity"]);
        echo $cart->getItems();
EN

回答 1

Stack Overflow用户

发布于 2021-03-18 00:21:37

您初始化了一个$items空数组,但从未使用给定的$item数组设置过您的$this->item。你在路上失去了一些东西。

你应该先初始化购物车

代码语言:javascript
复制
$cart = new Cart();
$items = $cart->getItems();

假设addProduct()函数是一个购物车方法,修改您的数组。

代码语言:javascript
复制
$cart->addProduct($product, $quantity);

addProduct可能返回$cart本身或为空

代码语言:javascript
复制
# 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作为给定产品的数组键可能会有更多的好处。大概是这样的:

代码语言:javascript
复制
 public function addProduct($singleProduct, $quantity)
    {
        $productId = $singleProduct->getId();
        $this->items[productId] = $singleProduct;
    }

您可以以更好的方式获得prodcut,并且可以解决数组键的问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66676049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档