2016-10-21 2 views
0

이 배열을 startTime으로 어떻게 정렬합니까?배열을 startTime별로 정렬하는 방법?

코드 :

function arraySorter($a, $b) { 
    return strtotime($a->startTime) - strtotime($b->startTime); 
} 

usort($this->meetingSlotsTaken, 'arraySorter'); 

echo "<pre>"; 
    print_r($this->meetingSlotsTaken); 
echo "</pre>"; 

내가 동적으로 내 코드를하고있어, 나는 수동으로 다음과 같이 키를 입력하지 않으 :

usort($this->meetingSlotsTaken[0]['2016-10-07 14:10:00'], 'arraySorter'); 

인쇄 아웃 :

Array 
(
    [0] => Array 
     (
      [2016-10-07 14:10:00] => Array 
       (
        [0] => stdClass Object 
         (
          [pupil_id] => 48307 
          [fullname] => Callum Lacey 
          [grade_id] => 87 
          [meeting_id] => 1812 
          [slot_id] => 31306 
          [title] => Parent Evening 1 - 2016-10-07 14:00 
          [startTime] => 2016-10-07 14:10:00 
          [endTime] => 2016-10-07 14:20:00 
         ) 

        [1] => stdClass Object 
         (
          [pupil_id] => 79571 
          [fullname] => Daniel Lacey 
          [grade_id] => 87 
          [meeting_id] => 1812 
          [slot_id] => 31305 
          [title] => Parent Evening 1 - 2016-10-07 14:00 
          [startTime] => 2016-10-07 14:00:00 
          [endTime] => 2016-10-07 14:10:00 
         ) 

        [2] => stdClass Object 
         (
          [pupil_id] => 48307 
          [fullname] => Callum Lacey 
          [grade_id] => 87 
          [meeting_id] => 1816 
          [slot_id] => 31322 
          [title] => 2016-10-07 14:15 
          [startTime] => 2016-10-07 14:20:00 
          [endTime] => 2016-10-07 14:25:00 
         ) 

        [3] => stdClass Object 
         (
          [pupil_id] => 79571 
          [fullname] => Daniel Lacey 
          [grade_id] => 87 
          [meeting_id] => 1816 
          [slot_id] => 31323 
          [title] => 2016-10-07 14:15 
          [startTime] => 2016-10-07 14:25:00 
          [endTime] => 2016-10-07 14:30:00 
         ) 

        [4] => stdClass Object 
         (
          [pupil_id] => 48307 
          [fullname] => Callum Lacey 
          [grade_id] => 87 
          [meeting_id] => 1813 
          [slot_id] => 31311 
          [title] => Parent Evening 2 - 2016-10-07 14:00 
          [startTime] => 2016-10-07 14:30:00 
          [endTime] => 2016-10-07 14:40:00 
         ) 

        [5] => stdClass Object 
         (
          [pupil_id] => 48307 
          [fullname] => Callum Lacey 
          [grade_id] => 87 
          [meeting_id] => 1815 
          [slot_id] => 31318 
          [title] => Parent Evening 3 - 2016-10-07 14:00 
          [startTime] => 2016-10-07 14:40:00 
          [endTime] => 2016-10-07 14:50:00 
         ) 

        [6] => stdClass Object 
         (
          [pupil_id] => 79571 
          [fullname] => Daniel Lacey 
          [grade_id] => 87 
          [meeting_id] => 1815 
          [slot_id] => 31319 
          [title] => Parent Evening 3 - 2016-10-07 14:00 
          [startTime] => 2016-10-07 14:50:00 
          [endTime] => 2016-10-07 15:00:00 
         ) 
       ) 
     ) 
) 
+0

는 전체 코드를 표시합니다. –

+0

@NikhilVaghela 업데이트 된 질문을 확인하십시오. –

+0

시도'usort ($ this-> meetingSlotsTaken [0] [ '2016-10-07 14:10:00'], 'arraySorter'); ' –

답변

1

배열의 배열에서 배열을 정렬해야합니다.

foreach($this->meetingSlotsTaken as $k1 => $v1){ 
    foreach($v1 as $k2 => $v2){ 
     usort($this->meetingSlotsTaken[$k1][$k2], 'arraySorter'); 
    } 
} 
+0

이것은 효과가있다. 고맙습니다 :) –

0

사용 예 :

$array = array(
    0 => array(
     'name' => 'Name0', 
     'date' => '2016-10-10 15:30:00' 
    ), 
    1 => array(
     'name' => 'Name1', 
     'date' => '2016-10-11 15:30:00' 
    ), 
    2 => array(
     'name' => 'Name3', 
     'date' => '2016-10-13 15:30:00' 
    ), 
    3 => array(
     'name' => 'Name4', 
     'date' => '2016-10-05 15:30:00' 
    ), 
    4 => array(
     'name' => 'Name5', 
     'date' => '2016-10-09 15:30:00' 
    ) 
); 

$temp_array = array(); 
foreach ($array as $key => $value) { 
    $temp_array[$key] = $value['date']; 
} 

asort($temp_array); // arsort() for reverse order 

$output = array(); 
foreach ($temp_array as $key => $value) { 
    $output[] = $array[$key]; 
} 

echo "<pre>"; print_r($output); 

결과 :

Array 
(
    [0] => Array 
     (
      [name] => Name4 
      [date] => 2016-10-05 15:30:00 
     ) 

    [1] => Array 
     (
      [name] => Name5 
      [date] => 2016-10-09 15:30:00 
     ) 

    [2] => Array 
     (
      [name] => Name0 
      [date] => 2016-10-10 15:30:00 
     ) 

    [3] => Array 
     (
      [name] => Name1 
      [date] => 2016-10-11 15:30:00 
     ) 

    [4] => Array 
     (
      [name] => Name3 
      [date] => 2016-10-13 15:30:00 
     ) 

) 
관련 문제