第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

php 中的 foreach(菜單和子菜單)

php 中的 foreach(菜單和子菜單)

PHP
MMMHUHU 2023-08-26 17:47:04
我已經(jīng)通過(guò) oop php 創(chuàng)建了一個(gè)菜單和子菜單,但 foreach 循環(huán)有問(wèn)題。我想要實(shí)現(xiàn)的目標(biāo)是讓子菜單數(shù)組僅在菜單數(shù)組的第三個(gè)元素中循環(huán)!我希望我描述得很好!這是 foreach 代碼:<ul id="navigation">    <?php    $HeaderMenuOBJ = new Headermenu();    $HeaderMenu = $HeaderMenuOBJ->getHeaderMenu();    $SubHeaderMenu = $HeaderMenuOBJ->getHeaderSubMenu();   //var_dump($SubHeaderMenu);   //var_dump($HeaderMenu);    foreach ($HeaderMenu as $row){        ?>        <li>            <a class="active"                 href="                    <?php                     echo $row['href'];                    ?>                ">                <?php echo($row['content']);?>                            </a>            <ul class="submenu">                <?php                     foreach ($SubHeaderMenu as $row){                ?>                <li>                    <a                         href="                            <?php                                echo $row['href'];                            ?>                            ">                            <?php                                 echo $row['content'];                            ?>                    </a>                </li>                <?php                  }                ?>            </ul>      </li>        <?php    } ?></ul>這是我的 DOM(一種從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)的控制器):class Headermenu extends dbh {    public $main_query = "SELECT * FROM `header_menu` WHERE parent is null";    public $sub_query = "SELECT * FROM `header_menu` WHERE parent = 3";    public function getHeaderMenu(){       $menu = parent::connect()->query($this->main_query);        while($row = $menu->fetch_array()){            $rows[] = $row;            /*$submenu = parent::connect()->query(str_replace("@param",$header->PK_ID,$this->sub_query));           while($sub_header = $submenu-> fetch_array()){               $header->subheaders[]=$sub_header;           }*/           //$headers[] = $header;       }       return $rows;    } 
查看完整描述

1 回答

?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

直接回答:


首先,您需要在外部和內(nèi)部 foreach 中使用 2 個(gè)不同的變量:foreach ($HeaderMenu as $menuRow){現(xiàn)在foreach ($SubHeaderMenu as $subMenuRow){兩者都有$row. 你可以這樣做:if ($menuRow['id'] == 3) { foreach ($SubHeaderMenu as $subMenuRow){- 所以將內(nèi)部 foreach 包含在其中,if并且僅當(dāng)父 id 為 3 時(shí)才執(zhí)行此操作,但最好獲取所有 header_menu 行,將該數(shù)據(jù)轉(zhuǎn)換為嵌套數(shù)組并按動(dòng)態(tài)結(jié)構(gòu)顯示。


動(dòng)態(tài)結(jié)構(gòu)答案:


獲取所有菜單項(xiàng),創(chuàng)建菜單數(shù)組,每個(gè)菜單都會(huì)有其子菜單項(xiàng)。然后顯示這個(gè)就很容易了。我假設(shè)只有兩個(gè)級(jí)別 - 菜單和子菜單。


樣本數(shù)據(jù):


+----+-------+---------------+-----------+

| id | href  | content       | parent_id |

+----+-------+---------------+-----------+

|  1 | href1 | header1       |      NULL |

|  2 | href2 | header2       |      NULL |

|  3 | href3 | header3       |      NULL |

|  4 | href4 | subheader 1 1 |         1 |

|  5 | href5 | subheader 1 2 |         1 |

|  6 | href6 | subheader 2 1 |         2 |

+----+-------+---------------+-----------+

代碼:


<?php


$mysqli = new mysqli("localhost", "zz", "zz", "zz");


// fetch all menu items

$query = 'select * from header_menu order by parent_id';

$result = $mysqli->query($query);

$data = $result->fetch_all(MYSQLI_ASSOC);


var_dump($data);


// build menu with menus and their submenus

$menu = [];

foreach ($data as $row) {

  if ($row['parent_id'] === null) {

    $menu[$row['id']] = $row;

    $menu[$row['id']]['submenus'] = [];

  } else {

    $menu[$row['parent_id']]['submenus'][] = $row;

  }

}


var_dump($menu);


// now display it in html or however you want

foreach ($menu as $item) {

  echo $item['content'].PHP_EOL;

  foreach ($item['submenus'] as $subitem) {

    echo '  '.$subitem['content'].PHP_EOL;

  }

}

$數(shù)據(jù):


array(6) {

  [0]=>

  array(4) {

    ["id"]=>

    string(1) "1"

    ["href"]=>

    string(5) "href1"

    ["content"]=>

    string(7) "header1"

    ["parent_id"]=>

    NULL

  }

  [1]=>

  array(4) {

    ["id"]=>

    string(1) "2"

    ["href"]=>

    string(5) "href2"

    ["content"]=>

    string(7) "header2"

    ["parent_id"]=>

    NULL

  }

  [2]=>

  array(4) {

    ["id"]=>

    string(1) "3"

    ["href"]=>

    string(5) "href3"

    ["content"]=>

    string(7) "header3"

    ["parent_id"]=>

    NULL

  }

  [3]=>

  array(4) {

    ["id"]=>

    string(1) "4"

    ["href"]=>

    string(5) "href4"

    ["content"]=>

    string(13) "subheader 1 1"

    ["parent_id"]=>

    string(1) "1"

  }

  [4]=>

  array(4) {

    ["id"]=>

    string(1) "5"

    ["href"]=>

    string(5) "href5"

    ["content"]=>

    string(13) "subheader 1 2"

    ["parent_id"]=>

    string(1) "1"

  }

  [5]=>

  array(4) {

    ["id"]=>

    string(1) "6"

    ["href"]=>

    string(5) "href6"

    ["content"]=>

    string(13) "subheader 2 1"

    ["parent_id"]=>

    string(1) "2"

  }

}

$菜單:


array(3) {

  [1]=>

  array(5) {

    ["id"]=>

    string(1) "1"

    ["href"]=>

    string(5) "href1"

    ["content"]=>

    string(7) "header1"

    ["parent_id"]=>

    NULL

    ["submenus"]=>

    array(2) {

      [0]=>

      array(4) {

        ["id"]=>

        string(1) "4"

        ["href"]=>

        string(5) "href4"

        ["content"]=>

        string(13) "subheader 1 1"

        ["parent_id"]=>

        string(1) "1"

      }

      [1]=>

      array(4) {

        ["id"]=>

        string(1) "5"

        ["href"]=>

        string(5) "href5"

        ["content"]=>

        string(13) "subheader 1 2"

        ["parent_id"]=>

        string(1) "1"

      }

    }

  }

  [2]=>

  array(5) {

    ["id"]=>

    string(1) "2"

    ["href"]=>

    string(5) "href2"

    ["content"]=>

    string(7) "header2"

    ["parent_id"]=>

    NULL

    ["submenus"]=>

    array(1) {

      [0]=>

      array(4) {

        ["id"]=>

        string(1) "6"

        ["href"]=>

        string(5) "href6"

        ["content"]=>

        string(13) "subheader 2 1"

        ["parent_id"]=>

        string(1) "2"

      }

    }

  }

  [3]=>

  array(5) {

    ["id"]=>

    string(1) "3"

    ["href"]=>

    string(5) "href3"

    ["content"]=>

    string(7) "header3"

    ["parent_id"]=>

    NULL

    ["submenus"]=>

    array(0) {

    }

  }

}

菜單結(jié)構(gòu)的輸出:


header1

  subheader 1 1

  subheader 1 2

header2

  subheader 2 1

header3

現(xiàn)在您可以輸出所有菜單項(xiàng)及其子菜單項(xiàng),而不僅僅是菜單 ID 3。


查看完整回答
反對(duì) 回復(fù) 2023-08-26
  • 1 回答
  • 0 關(guān)注
  • 145 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)