2012-07-01 42 views
0

要開始了,這裏是JSON響應,我一直在努力:簡化解析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被用來格式化爲一個HTML UL一個DIV中:

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>' ; 

} 

}

輸出是具有奇妙顯示在頁面的部分下降的月份和年份行項目的期望的結果,但我怎麼收拾這個代碼,以便精美的顯示 資源?

+0

使用函數返回類似的數據,在if語句中有很多重複的代碼。 – Kishore

+0

有沒有問題,或者你想讓我們做你的工作? –

+0

這屬於http://codereview.stackexchange.com –

回答

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"; 
    

    這個小例子顯示整個列表,我剛離開創建鏈接哪些應該沒問題進行演示。

如果你保持小而分散的東西,你會發現它更容易創建。