나는 날짜의 배열이 내림차순으로 내림차순으로 배열되어 있습니다. 루프를 반복하면서 현재 문자열을 분할하고 현재 연도 & 월을 사용하여 비교합니다.PHP를 사용하여 날짜 배열을 3 레벨 중첩 목록으로 바꾸는 방법
<ul>
<li><h1>2012</h1>
<ul>
<li><h2>Jan</h2>
<ul>
<li>Jan 1, 2012</li>
<li>Jan 5, 2012</li>
</ul>
</li>
<li><h2>Feb</h2>
<ul>
<li>Feb 3, 2012</li>
<li>Feb 8, 2012</li>
</ul>
</li>
</ul>
</li>
<li><h1>2011</h1>
<ul>
<li><h2>Jan</h2>
<ul>
<li>Jan 2, 2011</li>
<li>Mar 2, 2011</li>
</ul>
</li>
<li><h2>Feb</h2>
<ul>
<li>Feb 9, 2011</li>
<li>Feb 20, 2011</li>
</ul>
</li>
</ul>
</li>
</ul>
이 내 시도 중 하나입니다 :
$archiveDateHTML = '<ul id="menu">';
$c = 0;
foreach ($ArchiveDates as $k=>$value){
$dateArray = split(' ', $value);
if($currentYear !== $dateArray[2] && $c+1 < count($ArchiveDates)){
if($c > 0){ $archiveDateHTML .= '</ul>';}
$archiveDateHTML .= '<h2 class="yearTitle">'.$dateArray[2].'</h2>';
$archiveDateHTML .= '<ul class="yearList">';
$newYear = 1;
}
if($currentMonth !== $dateArray[0] && $c+1 < count($ArchiveDates)){
if($c > 0 && $newYear==0){ $archiveDateHTML .= '</ul>';}
$archiveDateHTML .= '<h3 class="monthTitle">'.$dateArray[0].'</h3>';
$archiveDateHTML .= '<ul class="monthList">';
$newYear = 0;
}
$archiveDateHTML .= $value;
$currentYear = $dateArray[2];
$currentMonth = $dateArray[0];
$c++;
}
$archiveDateHTML .= '</ul>';
몇 가지 명백한 문제가있다, 위의 코드와 여기에
는 원하는 출력 (예)입니다. 나는 계속 가까워지고 있지만 논리를 둘러싸고 머리를 감싸고있는 것은 아닙니다. 도와 주셔서 감사합니다.
선생님. 많이. 나는 list() 함수를 항상 잊지 만, 편리하다. 고마워요, 고마워요! – hzane