簡體   English   中英

PHP遞歸樹視圖生成器僅從填充的“選定”數組中選擇一個選項?

[英]PHP recursive tree view generator is only selecting one option off a populated “selected” array?

我有一個主要工作的遞歸樹視圖生成器。 給定一個父子數組,它可以將其正確輸出為復選框字符串,然后由CSS設置樣式。

它有兩個值。 樹數組和一個選定的數組。 當它讀取選定的值時,將附加“選中”,但不附加則附加一個正常的復選框字符串。

但是,一旦附加了未選中的復選框,它就只能顯示最后選擇的值,並且似乎完全忘記了數組的其余部分。

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行似乎是問題所在,但除此之外,我不知道可能會發生什么。 任何幫助,將不勝感激。

您的第二個foreach對我來說看起來很奇怪-您確定您不想要if (in_array(...))而不是foreach中的if嗎?

您的<label>也缺少for屬性的=

但是,否則,您的遞歸邏輯和變量傳遞看起來不錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM