2012-06-12 4 views
0

변수 'i_lastname'로이 다차원 PHP 객체를 정렬해야합니다.값으로 PHP 다차원 배열 정렬

나는 usort와 ksort를 사용하여 대부분의 예제를 사용하지 않았다. 대부분의 예제는이 예제와 비슷하지만 나를 위해 작동하지 않습니다.

function sort_by_name($a, $b) 
{ 
    return ($a->i_lastname < $b->i_lastname ? -1 : 1); 
} 
usort($cards, 'sort_by_name'); 

여기는 개체 구조입니다.

감사합니다.

Array 
(
    [0] => Array 
     (
      [officer_id] => 4D5DEF60 
      [card_id] => 5 
      [general] => Array 
       (
        [0] => Array 
         (
          [i_officer_id] => 4D5DEF60 
          [i_officer_name] => 
          [i_datetime] => 2012-06-12 13:47:00 
          [i_location] => 17 Rue de Neuch, Yvette, France 
          [i_lat] => 48.6955 
          [i_lon] => 2.21458 
          [i_reason] => DUI 
         ) 
       ) 
      [subject] => Array 
       (
        [0] => Array 
         (
          [subject_id] => 6 
          [i_lastname] => Toro 
          [i_firstname] => Benicio 
         ) 
        [1] => Array 
         (
          [subject_id] => 9 
          [i_lastname] => Limon 
          [i_firstname] => Pedro 
         ) 
       ) 
      [vehicle] => Array 
       (
       ) 
     ) 

    [1] => Array 
     (
      [officer_id] => 4D5DEF60 
      [card_id] => 2 
      [general] => Array 
       (
        [0] => Array 
         (
          [i_officer_id] => 0f3b45a3 
          [i_officer_name] => 
          [i_datetime] => 2012-06-06 19:42:00 
          [i_location] => 10231 Yankee St, Miami, USA 
          [i_lat] => 39.5952 
          [i_lon] => -84.2003 
          [i_reason] => Speeding 
         ) 
       ) 
      [subject] => Array 
       (
        [0] => Array 
         (
          [subject_id] => 3 
          [i_lastname] => Doe 
          [i_firstname] => John 
         ) 
        [0] => Array 
         (
          [subject_id] => 15 
          [i_lastname] => Doe 
          [i_firstname] => Jane 
         ) 
       ) 
      [vehicle] => Array 
       (
       ) 
     ) 
) 
+0

시도해 보셨습니까? 한번 시도해 보지 않았지만 한 번 권장되는 것을 보았습니다. –

+0

내 경찰 기록을 지우는 것에 동의하면 codez를 보낼 수 있습니다 :) – goat

+0

그래서 'subject' 하위 배열을 정렬하려고합니다. 당신은'usort()'에 전달합니까? 전체 구조 또는 하위 배열? – DaveRandom

답변

1

당신은 ['...']보다는 ->... 사용해야합니다 - 당신은 배열이 아닌 객체를 처리하고 있습니다.

return strnatcasecmp($a['i_lastname'],$b['i_lastname']); 

strcmp, strcasecmp, strnatcmp 또는 strnatcasecmp의 모든 잘 작동합니다, 당신은 당신이 무엇을하고 있는지에 대한 가장 적합한 하나를 결정해야합니다 같은

콜백이 보일 것입니다.

+0

그래도 제대로 정렬되지 않습니다. 'i_lastname'이 'subject'배열 안에 있다고 지정하면 안됩니까? –

+0

예. 당신은 무엇을 찾을 지 찾을 곳을 말해야합니다. 그래서'$ a [ 'subject'] [0] [ 'i_lastname']'과 비슷할 것입니다. –

+0

$ a [ 'subject'] [0] [ 'i_lastname']의 [0]은 왜 그럴까요? –