首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP递归树形视图生成器是否只从填充的“选定”数组中选择一个选项?

PHP递归树形视图生成器是否只从填充的“选定”数组中选择一个选项?
EN

Stack Overflow用户
提问于 2018-07-25 07:16:29
回答 1查看 138关注 0票数 0

我有一个主要工作的递归树视图生成器。给定一个父子数组,它可以将其正确地输出为一个复选框字符串,然后由CSS设置样式。

它需要两个值。树数组和选定的数组。当它读取选定的值时,它会附加"checked",但如果不是这样,则会附加一个正常的复选框字符串。

但是,一旦它附加了一个未选中的复选框,它就只能显示最后一个选定的值,并且似乎完全忘记了数组的其余部分。

代码语言:javascript
复制
public function genTree($tree, $selectedValues = [1,2,3,4])
{
    $output = '<ul class="treeview">';

    foreach($tree as $arr)
    {
        $output .= '<li>';

        foreach($selectedValues as $num)
        {
            if ($num == $arr['id'])
            {
                $output .= '<input checked type="checkbox" id="'.$arr['name'].'" name="selected[]" value="'.$arr['id'].'"></input>';
            } else {
                $output .= '<input type="checkbox" id="'.$arr['name'].'" name="selected[]" value="'.$arr['id'].'"></input>';    
            }
        }

        $output .= '<label for"'.$arr['name'].'">'.ucfirst($arr['name']).'</label>';    

        if (isset($arr['children']) && count($arr['children']) > 0)
        {       
            $output .= $this->genTree($arr['children'], $selectedValues);   
        }
        $output .= '</li>';
    }
    $output .= '</ul>';

    return $output;
}   

第15行似乎是问题所在,但除此之外,我不知道可能会发生什么。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 07:32:34

您的第二个foreach在我看来很奇怪-您确定不想要像if (in_array(...))这样的东西,而不是foreach中的if

您的<label>for属性上也缺少=

除此之外,您的递归逻辑和变量传递看起来很好。

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

https://stackoverflow.com/questions/51508838

复制
相关文章

相似问题

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