亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 PHP 中的類別/子類別數組中獲取常見的子類別?

如何從 PHP 中的類別/子類別數組中獲取常見的子類別?

PHP
米琪卡哇伊 2022-01-14 18:14:04
我有一個像這樣的數組:ProductCategory 對象的定義如下:class ProductCategory{    public $name;    public $id;    public $subcategory;    public function __construct($categoryName, $categoryId, $subcategory){        $this->name = $categoryName;        $this->id = $categoryId;        $this->subcategory = $subcategory;    }}ProductSubcategory 的定義如下:class ProductSubcategory{    public $name;    public $id;    public function __construct($subcategoryName, $subcategoryId){        $this->name = $subcategoryName;        $this->id = $subcategoryId;    }我正在嘗試獲取屬于同一類別的所有子類別。例如,在上面數組的位置 0 和 1,Glass 和 Accessories 子類別都屬于 Non Medicated 類別。最終,我試圖獲得這樣的顯示(我不想顯示類別和子類別編號,但我需要它們以供以后使用):非藥物(id = 6)玻璃(類別 ID = 6,子類別 ID = 409)配件(categoryid = 6,subcategoryid = 46)潤唇膏洗劑餾出物墨盒酊劑膠囊汽化器襯衫CBD沐浴炸彈食品注入食用(id = 4)軟糖(categoryid = 4,subcategoryid = 26)巧克力棒焙烤食品酊劑食用油糖果膠囊/丸集中活樹脂餾出物醬糖(每個)墨盒/筆無溶劑BHO最終輸出將是用戶可以單擊的單選按鈕 - 如果他們單擊父類別,產品將按該父類別過濾。如果他們單擊子類別,產品將按該父類別以及子類別進行過濾。我唯一嘗試過的是我從數組中獲得了一個不同的父類別列表,并嘗試遍歷它們,然后為每個父類別循環遍歷上面的數組并檢查類別是否與父類別匹配,然后附加子類別對象。出于某種原因,我無法讓它工作。我不知道我是否只需要放棄使用對象本身并返回一組名稱和 ID 或什么。任何指導將不勝感激。這與我昨天提出的一個問題有關,其中有人幫助我重新設計了 ProductCategory 對象。我比昨天更近了,但仍然不在那里。
查看完整描述

3 回答

?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

下面的代碼可能會幫助您處理原始數組(您可以通過 toArray() 來完成),


$parentCategories = [6, 4, 3, 2];

$result           = [];

foreach ($parentCategories as $key => $pv) {

    foreach ($childCategories as $cv) {

        if ($pv == $cv['id']) {

            if (empty($result[$cv['id']]['name'])) {

                $result[$cv['id']]['data']['id'] = $pv;

                $result[$cv['id']]['data']['name']       = $cv['name'];

            }

            $result[$cv['id']]['children'][] = $cv['subcategory'];

        }

    }

}



輸出:-


                      (

                            [name] => Cartridges

                            [id] => 17579

                        )


                    [6] => Array

                        (

                            [name] => Tincture

                            [id] => 17644

                        )


                    [7] => Array

                        (

                            [name] => Capsules

                            [id] => 17645

                        )


                    [8] => Array

                        (

                            [name] => Vaporizers

                            [id] => 42

                        )


                    [9] => Array

                        (

                            [name] => Shirts

                            [id] => 44

                        )


                    [10] => Array

                        (

                            [name] => CBD Bath Bomb

                            [id] => 19461

                        )


                    [11] => Array

                        (

                            [name] => Edibles

                            [id] => 17580

                        )


                )


        )


    [4] => Array

        (

            [data] => Array

                (

                    [id] => 4

                    [name] => Infused Edible

                )


            [children] => Array

                (

                    [0] => Array

                        (

                            [name] => Gummies

                            [id] => 26

                        )


                    [1] => Array

                        (

                            [name] => Chocolate Bars

                            [id] => 25

                        )


                    [2] => Array

                        (

                            [name] => Baked Goods

                            [id] => 23

                        )


                    [3] => Array

                        (

                            [name] => Tincture

                            [id] => 29

                        )


                    [4] => Array

                        (

                            [name] => Cooking Oil

                            [id] => 18864

                        )


                    [5] => Array

                        (

                            [name] => Sweets

                            [id] => 27

                        )


                    [6] => Array

                        (

                            [name] => Capsules/Pills

                            [id] => 22

                        )


                )


        )


    [3] => Array

        (

            [data] => Array

                (

                    [id] => 3

                    [name] => Cartridges / Pens

                )


            [children] => Array

                (

                    [0] => Array

                        (

                            [name] => Solventless

                            [id] => 18051

                        )


                    [1] => Array

                        (

                            [name] => BHO

                            [id] => 10

                        )


                )


        )


    [2] => Array

        (

            [data] => Array

                (

                    [id] => 2

                    [name] => Concentrate

                )


            [children] => Array

                (

                    [0] => Array

                        (

                            [name] => Live Resin

                            [id] => 15

                        )


                    [1] => Array

                        (

                            [name] => Distillate

                            [id] => 18005

                        )


                    [2] => Array

                        (

                            [name] => Sauce

                            [id] => 18767

                        )


                    [3] => Array

                        (

                            [name] => RSO

                            [id] => 18865

                        )


                    [4] => Array

                        (

                            [name] => Sugar (Each)

                            [id] => 18876

                        )


                )


        )


)

我從邏輯上得到腳本的輸出,


foreach ($result as $key => $value) {

    echo "<ul>";

    echo "<li>" . $value['data']['name'] . '(' . 'id=' . $value['data']['id'] . ')';

    echo "<ul>";

    foreach ($value['children'] as $k => $value1) {

        echo "<li>";

        if ($k == 0) {

            echo $value1['name'] . "(" . 'categoryid = ' . $value['data']['id'] . ', subcategoryid = ' . $value1['id'] . ")";

        } else {

            echo $value1['name'];

        }

        echo "</li>";

    }

    echo "</ul></li></ul>";

}

輸出為


<ul>

  <li>Non Medicated(id=6)

    <ul>

      <li>Glass(categoryid = 6, subcategoryid = 409)</li>

      <li>Accesories</li>

      <li>Lip Balm</li>

      <li>Lotion</li>

      <li>Distillate</li>

      <li>Cartridges</li>

      <li>Tincture</li>

      <li>Capsules</li>

      <li>Vaporizers</li>

      <li>Shirts</li>

      <li>CBD Bath Bomb</li>

      <li>Edibles</li>

    </ul>

  </li>

</ul>

<ul>

  <li>Infused Edible(id=4)

    <ul>

      <li>Gummies(categoryid = 4, subcategoryid = 26)</li>

      <li>Chocolate Bars</li>

      <li>Baked Goods</li>

      <li>Tincture</li>

      <li>Cooking Oil</li>

      <li>Sweets</li>

      <li>Capsules/Pills</li>

    </ul>

  </li>

</ul>

<ul>

  <li>Cartridges / Pens(id=3)

    <ul>

      <li>Solventless(categoryid = 3, subcategoryid = 18051)</li>

      <li>BHO</li>

    </ul>

  </li>

</ul>

<ul>

  <li>Concentrate(id=2)

    <ul>

      <li>Live Resin(categoryid = 2, subcategoryid = 15)</li>

      <li>Distillate</li>

      <li>Sauce</li>

      <li>RSO</li>

      <li>Sugar (Each)</li>

    </ul>

  </li>

</ul>


查看完整回答
反對 回復 2022-01-14
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

$categories我像你一樣創建了一個假對象( )。


希望這可以幫助:


<?php


 $categories = array();


 $obj0 = new stdClass;

 $obj0->id = 123;

 $obj0->name = "Non Medicated";

 $obja = new stdClass;

 $obja->name = "Glass";

 $obja->id = 409;

 $obj0->subcategory =$obja;

 $categories[0] = $obj0;


 $obj1 = new stdClass;

 $obj1->id = 124;

 $obj1->name = "Non Medicated";

 $obj1a = new stdClass;

 $obj1a->name = "Capsules";

 $obj1a->id = 410;

 $obj1->subcategory =$obj1a;

 $categories[1] = $obj1;


 $obj2 = new stdClass;

 $obj2->id = 125;

 $obj2->name = "Non Medicated";

 $obj2a = new stdClass;

 $obj2a->name = "Capsules";

 $obj2a->id = 411;

 $obj2->subcategory =$obj2a;

 $categories[2] = $obj2;


 $toRet =array();


 foreach($categories as $category){

    $cat = $category->name;

    $toRet[$cat][] = $category->subcategory;

 }


 var_dump($toRet);

這是var_dump函數的輸出:


array(1) { ["Non Medicated"]=> array(3) { [0]=> object(stdClass)#2 (2) { ["name"]=> string(5) "Glass" ["id"]=> int(409) } [1]=> object(stdClass)#4 (2) { ["name"]=> string(8) "Capsules" ["id"]=> int(410) } [2]=> object(stdClass)#6 (2) { ["name"]=> string(8) "Capsules" ["id"]=> int(411) } } }



查看完整回答
反對 回復 2022-01-14
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

不確定我是否理解你想要的,但如果你只需要顯示類別和子類別,你可以做這樣的事情嗎?


foreach($categories as $key => $category){


    echo $category->name;

    echo $category->id;


    foreach($category->subcategory as $key2 => $subCategory){


        echo $subCategory->name;

        echo $subCategory->id;

        echo $category->id;

    }

}       


查看完整回答
反對 回復 2022-01-14
  • 3 回答
  • 0 關注
  • 180 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號