首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中显示使用数组的多选下拉菜单?

如何在php中显示使用数组的多选下拉菜单?
EN

Stack Overflow用户
提问于 2016-08-08 16:42:28
回答 4查看 479关注 0票数 0

我想像父级一样下拉,子级表示使用引导CSS的多级任务。我尝试了下面的方法,但我在孩子阶段就得到了所有课程的名称。我想要下拉列表,如下所示

Linux --Linux基础

CSS --CSS基础

下面是我的代码:

代码语言:javascript
复制
<ul class="sub-menu" style="border-right: 2px solid #012340;">
    <?php foreach($outContentArrResults AS $courseName=> $valArrMenu){ ?>
        <li class="menu-item-has-children">
          <a href="#"><?php echo isset($valArrMenu[0]) ? $valArrMenu[0]:'';?  ></a>

            <ul class="sub-menu" style="border-right: 2px solid #012340;border-left: 2px solid #012340;">
            <?php for($i=0; $i<count($valArrMenu['slug']); $i++){?>
                <li>
                   <a href="<?php echo $config['LIVE_URL'];?>courses/<?php isset($valArrMenu['slug'][$i]) ? $valArrMenu['slug'][$i]:'';?>"><?php echo isset($valArrMenu[$i]) ? $valArrMenu[$i]:'';?></a>
                </li>
            <?php } ?>
            </ul>
        </li>
    <?php } ?>
    </ul>

下面是我的数组值:

代码语言:javascript
复制
         Array
      (
              [mainCourse] => Array
      (
        [0] => linux
        [slug] => Array
             (  
                [0] => linux
                [1] => linux-basics
                [2] => first-steps
                [3] => last
                [4] => sdd
                [5] => css
                [6] => css-basics
                [7] => css-introduction
                [8] => linux-sub
                [9] => test-sub-sub-linux
            )

        [1] => linux Basics
        [2] => first steps
        [3] => last
        [4] => sdd
        [5] => css
        [6] => css Basics
        [7] => css Introduction
        [8] => linux sub
        [9] => test sub sub linux
    )

)
$arrCourses = $this->objWsCoursesModel->getMainMenuCourses();
        //print_r($arrCourses);
        $outResults = array();
        for($i=0; $i<count($arrCourses); $i++){
            $courseName = isset($arrCourses[$i]['course_name']) ? $arrCourses[$i]['course_name'] : '';
            $outResults['mainCourse'][] = $courseName;
            $outResults['mainCourse']['slug'][] = isset($arrCourses[$i]['course_slug_name']) ? $arrCourses[$i]['course_slug_name'] : '';
        }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-08 19:13:06

您正在制作一个非常复杂的数组,这将很难实现;)

尝试此数组:

代码语言:javascript
复制
$arrCourses = $this->objWsCoursesModel->getMainMenuCourses();
$outResults = array();
for($i=0; $i<count($arrCourses); $i++){
    $courseName = isset($arrCourses[$i]['course_name']) ?    $arrCourses[$i]['course_name'] : '';
    $outResults['mainCourse'][$courseName][] = isset($arrCourses[$i]['course_slug_name']) ? $arrCourses[$i]['course_slug_name'] : '';;
}

并尝试此代码。这是一种粗糙的代码。我不确定是否有语法错误,但我认为它会像这样工作:

代码语言:javascript
复制
<ul>
<?php foreach($outContentArrResults AS $courseName=> $valArrMenu){ ?>
<li class="menu-item-has-children">
    <a href="#"><?php echo $courseName ?></a>
    <ul class="sub-menu" style="border-right: 2px solid #012340;border-left: 2px solid #012340;">
        <?php for($valArrMenu as $row){?>
        <li>
            <a href="<?php echo $config['LIVE_URL'];?>courses/<?php isset($valArrMenu['slug'][$i]) ? $valArrMenu['slug'][$i]:'';?>"><?php echo isset($valArrMenu[$i]) ? $valArrMenu[$i]:'';?></a>
        </li>
        <?php } ?>
    </ul>
</li>
<?php } ?>
</ul>
票数 2
EN

Stack Overflow用户

发布于 2016-08-08 19:29:29

您可以像这样尝试,它以数组格式返回值。我将此函数用于项目类别树,

代码语言:javascript
复制
   function categoryDropDown($categoryArray, $parentId, $level, $options)
{
    $level++;
    foreach ($categoryArray  as  $array)
    {
        if($array['parentId'] == $parentId)
        {
            $opt = $array['name'] ;
            $categoryLevel = $level -1;
            $options[$array['id']] =  array("id"=> $array['id'], "categoryName"=>"$opt","level" => "$categoryLevel", "status" => $array['status']);
            $newParent = $array['id'];
            $options = categoryDropDown($categoryArray, $newParent, $level , $options);
        }
    }
    return $options;
}

-输出

代码语言:javascript
复制
    $options= categoryDropDown();      //now it will converted into an Array.

所以你可以像这样打印选项

代码语言:javascript
复制
  <?php
    foreach($options as $value)
    {
    ?>

    <option value="<?php echo $value['id']; ?>"> <?echo $value['categoryName']; ?> </option>

    //Which is similar to <option value="option name/id">Option 1</option>

    <?php
    }
    ?>

数组输出如下所示(这里的索引是我的DataBase中的主键)

代码语言:javascript
复制
Array
(
    [1] => Array
        (
            [id] => 1
            [categoryName] => Electronics
            [level] => 0
            [status] => d
        )

    [3] => Array
        (
            [id] => 3
            [categoryName] => Laptops
            [level] => 1
            [status] => a
        )

    [6] => Array
        (
            [id] => 6
            [categoryName] => Laptop Accessories
            [level] => 2
            [status] => a
        )

    [2] => Array
        (
            [id] => 2
            [categoryName] => Mobile
            [level] => 1
            [status] => a
        )

    [5] => Array
        (
            [id] => 5
            [categoryName] => Mobile Accessories
            [level] => 2
            [status] => d
        )

    [4] => Array
        (
            [id] => 4
            [categoryName] => Tablet
            [level] => 1
            [status] => a
        )

    [12] => Array
        (
            [id] => 12
            [categoryName] => Fashion
            [level] => 0
            [status] => a
        )

    [13] => Array
        (
            [id] => 13
            [categoryName] => Men
            [level] => 1
            [status] => a
        )

    [15] => Array
        (
            [id] => 15
            [categoryName] => Jeans
            [level] => 2
            [status] => a
        )

    [14] => Array
        (
            [id] => 14
            [categoryName] => Women
            [level] => 1
            [status] => a
        )

    [16] => Array
        (
            [id] => 16
            [categoryName] => Jeans
            [level] => 2
            [status] => a
        )

    [11] => Array
        (
            [id] => 11
            [categoryName] => Main Category 2
            [level] => 0
            [status] => a
        )

    [33] => Array
        (
            [id] => 33
            [categoryName] => temp
            [level] => 0
            [status] => a
        )

)

您还可以参考Simple recursive tree in PHP / MySQL

票数 1
EN

Stack Overflow用户

发布于 2016-08-08 19:39:10

是的,munjal的解决方案是正确的。而且你也在制作非常复杂的数组结构。如果您擅长jquery和json解析,那么可以在页面上加载js函数,您可以在其中为菜单树创建json数组。在db中,您可以轻松地进行管理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38824711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档