Как удалить объект из массива объектов по его свойству?
Помогите, пожалуйста, не могу разобраться, недавно подступился к ООП на 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.
Собственно, помогите разобраться, пожалуйста. Есть ли более подходящая функция, или может быть можно решить задачу как-то иначе? У меня уже, кажется, мозг отказывается работать.