Как удалить объект из массива объектов по его свойству?

Рейтинг: 0Ответов: 0Опубликовано: 04.04.2023

Помогите, пожалуйста, не могу разобраться, недавно подступился к ООП на php, занятие на использование объектов одного класса методами другого. Задание звучит следующим образом: "Реализуйте в классе Cart метод remove для удаления продуктов. Метод должен принимать параметром название удаляемого продукта.". Вод код, который у меня получился:

<?php
class Product
{
    private $name;
    private $price;
    private $quantity;

    public function __construct($name, $price, $quantity)
    {
        $this->name = $name;
        $this->price = $price;
        $this->quantity = $quantity;
    }
    public function getName()
    {
        return $this->name;
    }
    public function getPrice()
    {
        return $this->price;
    }
    public function getQuantity()
    {
        return $this->quantity;
    }
    public function getCost()
    {
        return $this->price * $this->quantity;
    }
}

class Cart
{
    private $products = [];

    public function add($product)
    {
        $this->products[] = $product;
    }
    public function getCart()
    {
        return $this->products;
    }
    public function remove($name)
    {
        $products = $this->products;
        foreach($products as $object => $name)
        {
            if(!empty(array_keys($products[$object], $name)))
            {
                unset($products[$object]);
            }
        }
    }
}

$product1 = new Product('sugar', 25, 10);
$product2 = new Product('meat', 250, 5);
$cart = new Cart;
$cart->add($product1);
$cart->add($product2);


echo '<pre>';
print_r($cart->getCart());
echo '</pre>';

$cart->remove('meat');

echo '<pre>';
print_r($cart->getCart());
echo '</pre>';

Всё бы хорошо, да только php справедливо ругается, что функция array_keys должна первым параметром принимать массив, а я ей даю объект: Warning: array_keys() expects parameter 1 to be array, object given in C:\OSPanel\domains\oop-and-mvc\133-passing-objects-by-parameters\Product.php on line 49.

Собственно, помогите разобраться, пожалуйста. Есть ли более подходящая функция, или может быть можно решить задачу как-то иначе? У меня уже, кажется, мозг отказывается работать.

Ответы

Ответов пока нет.