수정했습니다. 원하시는대로 되는 것 같네요.
실행 결과
function flattenList($source_arr, &$target_arr, $depth=0, $endInfo=array()) {
$i = 0;
$s = sizeof($source_arr);
array_unshift($endInfo, $depth);
$currentEndInfo = array();
foreach ($source_arr as $k=>$v) {
$target_arr[$k] = $v;
$target_arr[$k]['depth'] = $depth;
$target_arr[$k]['isFirst'] = (0==$i);
$children = $target_arr[$k]['child'];
unset($target_arr[$k]['child']);
if (++$i==$s) {
$currentEndInfo = $endInfo;
}
if (empty($children)) {
$target_arr[$k]['endInfo'] = $currentEndInfo;
} else {
$target_arr[$k]['hasChild'] = true; // 추가된 부분
flattenList($children, $target_arr, $depth+1, $currentEndInfo);
}
}
}
$arr = ...; //
$category = array();
flattenList($arr, $category);
$tpl->assign('category', $category);
----------------------------
<!--{@ category}-->
<!--{? .isFirst}-->
<ul>
<!--{/}-->
<li>
{.key_} : {.name}
<!--{? !.hasChild}-->
</li>
<!--{/}-->
<!--{@ .endInfo}-->
</ul>
<!--{? ..value_}-->
</li>
<!--{/}-->
<!--{/}-->
<!--{/}-->
|