2013-08-29 4 views
0

Joomla/K2의 사용자 지정 기능을 수정하고 있지만 실제로는 PHP 만 관련되어 있습니다. 이 기능은 어떤 모듈이나 확장 기능을 통해서도 사용할 수 없으므로 알아 내야합니다.PHP 날짜 비교가 올바르지 않습니다.

K2 기사를 출력하고 K2에서 'Extra Field'인 날짜 필드별로 정렬하려고합니다. 날짜 문자열로 데이터베이스에 저장됩니다. 내 기능을 정렬하려면, 그것 항목의 순서 변경 -하지만 올바른 순서로 그들을 얻기 위해 작동하지 않습니다. 이에서

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]); 
} 
관련 문제