2012-11-23 3 views
0

내가에 따라 정렬 할 배열의 필드의 두 가지 유형이에 정렬 기능에 usort 조정 :한이 분야

1 REGISTRATION_DATE 및 제 2 여기 preregistration_date

하고있다

Array 
(
    [0] => stdClass Object 
     (
      [id] => 120 
      [registration_date] => 2012-10-19 16:57:46 
      [username] => Jeff 
     ) 
    [1] => stdClass Object 
     (
      [id] => 121 
      [preregistration_date] => 2012-12-23 16:57:46 

     ) 
    [2] => stdClass Object 
     (
      [id] => 122 
      [registration_date] => 2012-11-30 16:57:46 
      [username] => Susan 
     ) 

) 

I가 주문하고자하는 (변수 $ unsorted_users에서 저장 됨)에서 print_r 배열 출력 REGISTRATION_DATEpreregistration_date 의해이 배열 DESC 그래서 다음과 같다

배열 ( [0] => stdClass 개체 ( [ID] => 121 [preregistration_date] => 2,012 -12-23 16시 57분 46초

 ) 
    [1] => stdClass Object 
     (
      [id] => 122 
      [registration_date] => 2012-11-30 16:57:46 
      [username] => Susan 

     ) 
    [2] => stdClass Object 
     (
      [id] => 120 
      [registration_date] => 2012-10-19 16:57:46 
      [username] => Jeff 

     ) 

) 

그리고 내에 usort 기능은 다음과 같습니다

$sorted_users = usort($unsorted_users, function($a, $b) { 
    return strcmp ($a->registration_date, $b->registration_date) ; 
}); 

하지만, 그것은 단지로 REGISTRATION_DATE을 정렬하고 더 REGISTRATION_DATE 예컨대 :

[1] => stdClass Object 
      (
       [id] => 121 
       [preregistration_date] => 2012-12-23 16:57:46 

      ) 

가없는 경우 오류가 발생합니다.

내 기능을 조정하여 registration_date 또는 preregistation_date 정렬 방식으로 조정하는 방법은 무엇입니까?

btw. registration_date 및 preregistration_date 형식은 항상 동일하며 둘 다 한 객체에있을 수 없습니다. 따라서 검증 할 필요가 없습니다.

미리 감사드립니다.

+0

속성에 액세스하기 전에 속성이 존재하는지 여부를 확인하기 위해'property_exists()'를 사용할 수 있습니다. – Barmar

답변

2

이와 비슷한?

$sorted_users = usort($unsorted_users, function($a, $b) { 
    $registrationDateA = empty($a->registration_date) ? 
     $a->preregistration_date : $a->registration_date; 
    $registrationDateB = empty($b->registration_date) ? 
     $b->preregistration_date : $b->registration_date; 
    return strcmp ($registrationDateA, registrationDateB) ; 
}); 
+0

올바른 방법입니다. 내가 어떻게 그것을 wokrs 알려주도록 노력할 것입니다. – Derfder

+0

멋지게 잘 작동합니다. – Derfder

관련 문제