[英]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.