如何在php中使用数组显示选择多个下拉列表?

时间:2016-08-08 08:42:28

标签: javascript php jquery html css

我想像父母一样下拉,孩子意味着使用bootstrap CSS进行多级任务。 我尝试了下面的一个,但我得到了所有课程名称的孩子。我想下拉像

Linux的    --Linux Basics

CSS    --CSS基础知识

以下是我的代码:

Desktop.browse(...)

下面是我的数组值:

Desktop.browse(...)

4 个答案:

答案 0 :(得分:2)

你正在创建一个很难实现的非常复杂的数组;)

试试这个数组:

$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'] : '';;
}

试试这段代码。这是一种粗略的代码。我不确定任何语法错误,但我认为它会像这样工作:

<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>

答案 1 :(得分:1)

您可以尝试这样,它以Array格式返回值。我将此函数用于Item category Tree,

   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;
}

---- ----输出

    $options= categoryDropDown();      //now it will converted into an Array.

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

  <?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
    }
    ?>

数组输出如下(此处索引是我的数据库中的主键)

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

答案 2 :(得分:0)

是的,munjal的解决方案是正确的。而且你正在制作非常复杂的数组结构。 如果你使用jquery和json解析比简单, 在页面上加载调用js函数,您可以在其中为菜单树创建json数组。 从db你可以轻松管理。

答案 3 :(得分:0)

所以这是我对问题的编辑,不确定我是否正确解释了问题:

$config['LIVE_URL'] = 'https://example.com/'
$arr_courses = $this->objWsCoursesModel->getMainMenuCourses();
$menu_data = [];
for ($i = 0; $i < count($arr_courses); $i++)
{
    $course_name = isset($arr_courses[$i]['course_name']) ? $arr_courses[$i]['course_name'] : '';
    $menu_data['mainCourse'][$course_name]['title'][$i] = $course_name;
    $menu_data['mainCourse'][$course_name]['slug'][$i] = isset($arr_courses[$i]['course_slug_name']) ? $arr_courses[$i]['course_slug_name'] : '';
}
// $menu_data should look something like this
$menu_data = [
    'linux' => [
        'title' => [
            'linux Basics',
            'first steps',
            'last',
            'sdd',
            'linux sub',
            'test sub sub linux',
        ],
        'slug' => [
            'linux-basics',
            'first-steps',
            'last',
            'sdd',
            'linux-sub',
            'test-sub-sub-linux',
        ],
    ],
    'css' => [
        'title' => [
            'css',
            'css Basics',
            'css Introduction',
        ],
        'slug' => [
            'css',
            'css-basics',
            'css-introduction',
        ],
    ]
];
?>
<ul class="sub-menu">
    <?php foreach($menu_data as $course_name => $data): ?>
        <li class="menu-item-has-children">
            <a href="#"><?php echo $course_name; ?></a>

            <ul class="sub-menu">                
                <?php for ($i = 0; $i < count($data['slug']); $i++): ?>
                    <li>
                        <a href="<?php echo $config['LIVE_URL'];?>courses/<?php echo isset($data['slug'][$i]) ? $data['slug'][$i]:'';?>"><?php echo isset($data['title'][$i]) ? $data['title'][$i]:'';?></a>
                    </li>
                <?php endfor; ?>
            </ul>
        </li>
    <?php endforeach; ?>
</ul>

哪个输出:

linux                          (href="#")
    linux Basics               (href=https://example.com/courses/linux-basics)
    first steps                (...)
    last
    sdd
    linux sub
    test sub sub linux
css                            (href ="#")
    css                        (href=https://example.com/courses/css)
    css Basics                 (...)
    css Introduction

从这里你可以添加css来正确设置样式,这不应该是一个太大的问题。