0

首先,这是我一直在处理的 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 . ',&nbsp;' . $du . '</a></li>' ;
                    }
                } else {
                    if ( $t[$du][$m] != NULL ){

                        echo '<li><a href="' . $baseref . 'blog/' . $du . '/' . $mm
                            . '/">' . $dm . ',&nbsp;' . $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 . ',&nbsp;' . $du . '</a></li>' ;
                    }
                } else {
                    if ( $t[$du][$m] != NULL ){

                        echo '<li><a href="' . $baseref . 'blog/' . $du . '/' . $mm
                            . '/">' . $dm . ',&nbsp;' . $du . '</a></li>' ;
                    }
                }
            }
        }
    }

    echo '</ul></div><div class="sidebar-bottom"></div>' ;

}

}

输出是在页面部分以降序显示月份和年份行项目的理想结果,但是我如何清理这段代码以便在源代码中漂亮地显示?

4

1 回答 1

0

一些技巧:

  • 分为三个部分:

    1. 从网站获取数组
    2. 从中提取有趣的部分
    3. 用那部分做展示。

      $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, ",&nbsp;", $year, "</li>\n";
        }
    }
    echo "<ul>\n";
    

    这个小例子显示了整个列表,我刚刚创建了链接,这应该可以用于演示目的。

如果您将事物保持小而分开,您会发现创建某些东西会更容易。

于 2012-07-01T03:17:56.947 回答