당신은
function array_to_list(array $array, $width = 3, $type = 'ul', $separator = ' ', $depth = 0)
{
$ulSpace = str_repeat($separator, $width * $depth++);
$liSpace = str_repeat($separator, $width * $depth++);
$subSpace = str_repeat($separator, $width * $depth);
foreach ($array as $key=>$value) {
if (is_array($value)) {
$output[(isset($prev) ? $prev : $key)] .= "\n" . array_to_list($value, $width, $type, $separator, $depth);
} else {
$output[$key] = $value;
$prev = $key;
}
}
return "$ulSpace<$type>\n$liSpace<li>\n$subSpace" . implode("\n$liSpace</li>\n$liSpace<li>\n$subSpace", $output) . "\n$liSpace</li>\n$ulSpace</$type>";
}
echo array_to_list(array('gg', 'dsf', array(array('uhu'), 'df', array('sdf')), 'sdfsd', 'sdfd')) . "\n";
같은 것이 하위 목록에 대한 설명으로 시작하지 않으면 내가 아는
<ul>
<li>
gg
</li>
<li>
dsf
<ul>
<li>
<ul>
<li>
uhu
</li>
</ul>
</li>
<li>
df
<ul>
<li>
sdf
</li>
</ul>
</li>
</ul>
</li>
<li>
sdfsd
</li>
<li>
sdfd
</li>
</ul>
이 약간의 차이를 프로그래머 생산 의미한다.
개인적으로 나는 보통 PHP로 작업하기가 쉬운 한 HTML이 어떻게 보이는지 상관하지 않습니다.
편집 : 당신이 첫 번째 통해 실행하면 OK, 작동 ... : P
는
function flat_array_to_hierarchical_array(array &$array, $depth = 0, $name = null, $toDepth = 0)
{
if ($depth == 0) {
$temp = $array;
$array = array_values($array);
}
if (($name !== null) && ($depth == $toDepth)) {
$output[] = $name;
} else if ($depth < $toDepth) {
$output[] = flat_array_to_hierarchical_array(&$array, $depth + 1, $name, $toDepth);
}
while ($item = array_shift($array)) {
$newDepth = $item['depth'];
$name = $item['name'];
if ($depth == $newDepth) {
$output[] = $name;
} else if ($depth < $newDepth) {
$output[] = flat_array_to_hierarchical_array(&$array, $depth + 1, $name, $newDepth);
} else {
array_unshift($array, $item);
return $output;
}
}
$array = $temp;
return $output;
}
$arr = flat_array_to_hierarchical_array($nested_array);
echo array_to_list($arr);
계층 구조를 만들기 위해 배열에 충분한 데이터가 없습니다. 스크립트는 "하위 모음"항목을 "막대"에 첨부하는 것을 어떻게 알 수 있습니까? 네가 다른 둥지를 틀면 "서브 서브 바"가 될까? 깊이 값은 쓸모가 없습니다. 배열을 계층 적으로 만들지 않는 이유는 무엇입니까? –
배열의 순서가 중요합니다. 트릭은 깊이 정보가있는 플랫 데이터에서 계층 구조를 작성합니다. 이 제목을 더 명확하게 편집 할 것입니다. – postfuturist
자, 하위 항목이 각각의 부모에게 올바르게 부착되도록하기위한 규칙은 무엇입니까? 색인 순서? 명명 규칙? –