Многострочный массив PHP

Я пытаюсь сортировать массив, основанный на ключе, «отправлен». Однако он не работает. У кого-нибудь есть указатели на то, чтобы заставить этот код работать? Благодаря:

Массив:

Array ( [0] => Array ( [wcccanumber] => 130700203 [call] => SEIZURES [address] => 221 S PINE ST [county] => C [station] => CNB [department] => CANBY FIRE DISTRICT #62 [units] => E61, M62 [dispatched] => 20:43:59 ) [1] => Array ( [wcccanumber] => 130700198 [call] => CARD/RESP ARREST [address] => 40781 HWY 26 [county] => C [station] => SAN [department] => SANDY FIRE DISTRICT #72 [units] => 3709, CH37, M1, M272, R71 [dispatched] => 19:33:27 ) [2] => Array ( [wcccanumber] => 130700337 [call] => TRAUMA C1 [address] => 16500 SW CENTURY DR [county] => W [station] => SHW [department] => TUALATIN VALLEY FIRE & RESCUE [units] => E33, METWA, MW68 [dispatched] => 21:40:13 ) [3] => Array ( [wcccanumber] => 130700335 [call] => FALL C1 [address] => 48437 NW PONGRATZ RD [county] => W [station] => BUX [department] => BANKS FIRE DISTRICT #13 [units] => E14, METWA, MW57, R13 [dispatched] => 21:07:48 ) ) 

Код:

 public function sortActiveCalls () { foreach ($this->getActiveCalls() as $key => $val) { $time[$key] = $val['dispatched']; } array_multisort($time, SORT_ASC, $this->getActiveCalls()); } 

Мне легче просто использовать usort

  usort($array, function ($a, $b) { return strtotime($a["dispatched"]) - strtotime($b["dispatched"]); }); 

Для вашего случая вы бы переопределили свой метод sortActiveCalls как

 public function sortActiveCalls(){ $data = $this->getActiveCalls(); usort($data, function ($a, $b) { return strtotime($a["dispatched"]) - strtotime($b["dispatched"]); }); return $data; } 

Не это будет работать только в php 5.3 и выше

Если вы используете более старую версию php, вам нужно будет определить отдельную функцию, чтобы сделать вид вроде

 if (!function_exists("sortByDispatched")){ function sortByDispatched($a, $b){ return strtotime($a["dispatched"]) - strtotime($b["dispatched"]); } } usort($array, "sortByDispatched"); 

В дополнение к тому, что сказал Orangepill, если вы используете 5.2 или более старые, вы можете использовать create_function () для создания анонимной (лямбда-стиль) функции. Например,

 usort($array, create_function( '$a,$b', 'return strtotime($a["dispatched"]) - strtotime($b["dispatched"]);'));