2013-08-29 104 views
0

我正在修改Joomla/K2中的自定義功能,但它確實只涉及PHP。這個功能不能通過任何模塊或擴展使用,所以我真的需要弄清楚。PHP日期比較不對

我正在輸出K2文章,並嘗試按K2中的「額外字段」進行排序。它作爲日期字符串存儲在數據庫中。我的作品排序工作,因爲它更改項目的順序 - 但它沒有工作,讓他們在正確的順序。

function cmp($a, $b){ 
    global $array; 
    return strcmp($array[$a][1], $array[$b][1]); 
} 


    $limit = 3; 
    $limitstart = 0; 

    foreach($items as $key=>$item) { 

      $extraval = NULL; 

      foreach ($item->extra_fields as $extraField){ 
       if($extraField->value != ''){ 
        if($extraField->name == "Start Date"){ 
         $extraval = strtotime($extra_field->value); 
        } 
       } 
      } 

      $extrasort[$key] = Array(); 
      $extrasort[$key][0] = $item; 
      $extrasort[$key][1] = $extraval; 

      } 

      sort($extrasort, 'cmp'); 

      $rows = Array(); 
      $total = $limit + $limitstart; 

      for($i=$limitstart; $i<$total; $i++) { 
      if(!empty($extrasort[$i][0])) { 
       $rows[] = $extrasort[$i][0]; 
      } 
      } 

輸出從這個目前是:

1381525200 
1380834000 
1386795600 

這是不正確的,(希望)明顯。

任何建議或提示將如此讚賞,我一直在玩這個小時,一般來說我不確定2D陣列。

感謝

回答

0

感謝您的幫助邁克。我的解決方案是將日期轉換爲ISO(YYYY-MM-DD)格式並使用以下函數進行排序:

function compareasc($v1, $v2) { 
     if ($v1[1] == $v2[1]) return 0; 
     return ($v1[1] < $v2[1])?-1:1; 
} 

usort($extrasort, 'compareasc'); 
0

sort使用提供了需要比較的兩個值的回調函數。沒有必要去查看全局數組。在這種情況下,你提供了$ extrasort中的兩個元素,它們本身就是數組,所以你只需要看看你想要排序的元素。

你的函數應該(可能)是:

function cmp($a, $b){ 
return strcmp($a[1], $b[1]); 
}