首先,这是我一直在研究的JSON响应:
{ "status": "ok",
"permalinks": [
"http:\/\/localhost\/blog\/2012\/06\/",
"http:\/\/localhost\/blog\/2012\/04\/",
"http:\/\/localhost\/blog\/2012\/03\/",
"http:\/\/localhost\/blog\/2011\/10\/"
],
"tree": {
"2012": {
"06": "221",
"04": "2",
"03": "3"
},
"2011": {
"10": "3"
}
}
}
PHP用于将其格式化为DIV中的HTML UL:
function DisplayResponse(){
$baseref = 'http://localhost/' ;
$url = $baseref . 'api/get_date_index';
$r = file_get_contents( $url ) ;
if( $r !== false ){
$r = json_decode($r,true);
$t = $r['tree'] ;
echo '<div class="sidebar">' ;
echo '<h3>Response</h3>' ;
echo '<ul class="sidebar-list">' ;
for ( $y = 0 ; $y <= 2 ; $y++ ){
if ( $y == 0 ){
for ( $m = 12 ; $m >= 0 ; $m-- ) {
$d = mktime ( 0, 0, 0, $m, 1, Date("Y") ) ;
$du = Date("Y", $d ) ;
$dm = Date("M", $d ) ;
if ( $m < 11 ){
$mm = sprintf("%02d",$m) ;
if ( $t[$du][$mm] != NULL ){
echo '<li><a href="' . $baseref . 'blog/' . $du . '/' . $mm
. '/">' . $dm . ', ' . $du . '</a></li>' ;
}
} else {
if ( $t[$du][$m] != NULL ){
echo '<li><a href="' . $baseref . 'blog/' . $du . '/' . $mm
. '/">' . $dm . ', ' . $du . '</a></li>' ;
}
}
}
} else {
for ( $m = 12 ; $m >= 0 ; $m-- ) {
$d = mktime ( 0, 0, 0, $m, 1, ( Date("Y") - $y) ) ;
$du = Date("Y", $d );
$dm = Date("M", $d ) ;
if ( $m < 11 ){
$mm = sprintf("%02d",$m) ;
if ( $t[$du][$mm] != NULL ){
echo '<li><a href="' . $baseref . 'blog/' . $du . '/' . $mm
. '/">' . $dm . ', ' . $du . '</a></li>' ;
}
} else {
if ( $t[$du][$m] != NULL ){
echo '<li><a href="' . $baseref . 'blog/' . $du . '/' . $mm
. '/">' . $dm . ', ' . $du . '</a></li>' ;
}
}
}
}
}
echo '</ul></div><div class="sidebar-bottom"></div>' ;
}
}
输出是将月份和年份行项目精确显示在页面部分的下降所需的结果,但如何清理此代码以便在源代码中精美显示?
答案 0 :(得分:0)
一些提示:
分为三个部分:
使用该部分进行显示。
$response = get_response();
$tree = get_tree($response);
output_tree($tree);
在您当前的显示代码中,您有很多代码重复。只需压缩任何重复的代码,例如将其放入函数中。当您这样做时,您可能也会意识到大多数代码甚至都不需要。
您可以迭代一个数组,甚至在一个数组中:
echo "<ul>\n";
foreach ($tree as $year => $months) {
foreach ($months as $month => $count) {
echo " <li>", $month, ", ", $year, "</li>\n";
}
}
echo "<ul>\n";
这个小例子显示了整个列表,我刚刚创建了链接,这些链接应该可以用于演示目的。
如果你把东西保持小而且分开,你会发现创造一些东西更容易。