我有一个主要工作的递归树视图生成器。给定一个父子数组,它可以将其正确地输出为一个复选框字符串,然后由CSS设置样式。
它需要两个值。树数组和选定的数组。当它读取选定的值时,它会附加"checked",但如果不是这样,则会附加一个正常的复选框字符串。
但是,一旦它附加了一个未选中的复选框,它就只能显示最后一个选定的值,并且似乎完全忘记了数组的其余部分。
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行似乎是问题所在,但除此之外,我不知道可能会发生什么。任何帮助都将不胜感激。
https://stackoverflow.com/questions/51508838
复制相似问题