我有一个 Product 对象列表,定义如下:
class Product{
public $description;
public $pricing;
public $name;
public $imageUrl;
public $id;
public $category;
public $subcategory;
public function __construct($id, $description, $pricing, $name, $imageUrl, ProductCategory $category, ProductSubCategory $subcategory){
$this->description = $description;
$this->pricing = $pricing;
$this->name = $name;
$this->imageUrl = $imageUrl;
$this->id = $id;
$this->category = $category;
$this->subcategory = $subcategory;
}
}
每个 Product 对象都有一个类别和子类别对象作为定义的一部分,它们的定义如下:
产品分类:
class ProductCategory{
public $name;
public $id;
public function __construct($categoryName, $categoryId){
$this->name = $categoryName;
$this->id = $categoryId;
}
}
产品子类别:
class ProductSubCategory{
public $name;
public $id;
public function __construct($subCategoryName, $subCategoryId){
$this->name = $subCategoryName;
$this->id = $subCategoryId;
}
}
例如,父类别 Non-Medicated 具有以下子类别(父类别、子类别):
Non Medicated, Glass
Non Medicated, Accesories
Non Medicated, Lip Balm
Non Medicated, Lotion
Non Medicated, Distillate
Non Medicated, Cartridges
Non Medicated, Tincture
Non Medicated, Capsules
我试图通过迭代产品来返回作为主要类别的对象数组以及每个主要类别的不同子类别,以便最终获得如下显示:
非药物
玻璃
配件
润唇膏
洗剂
馏出物
墨盒
酊剂
胶囊
到目前为止我所做的:
到目前为止,我可以通过这样做获得类别:
$categories = array();
$allProducts = $this->get_all_products();
foreach ( $allProducts as $item ) {
if ( ! in_array( $item->category, $categories ) ) {
array_push( $categories, $item->category );
}
}
print_r( $categories );
其中 $allProducts 是上面定义的 Product 对象数组。
我想做的是在这里得到一些东西 $categories[0][0] 是主要类别,然后 $categories[0][1] 是子类别 1,$categories[0][2] 是子类别 2,等等。
我也愿意以另一种方式接近它——这是我能想到的最简单的方法。任何关于如何更好地构建它的建议也将不胜感激。我以前听说过 Collections,但我从未使用过它们,我不确定它们是否适用于这里。
墨色风雨
摇曳的蔷薇
拉风的咖菲猫