Intereting Posts
Чтобы сохранить пользовательский класс и как его загрузить в компонент CakePHP? Как исправить "(# 200) Пользователь не разрешил приложению выполнять это действие" Ошибка при публикации на facebook wal Paypal: как забрать авторизованный платеж? Не удается передать экземпляр класса в конструктор Перенаправление на диалог проверки подлинности – «Произошла ошибка. Пожалуйста, повторите попытку позже" Использование settype в PHP вместо typecasting с помощью скобок, в чем разница? Как скрыть / показать разделы HTML-формы В PHP, как я могу использовать класс DOMDocument для замены атрибута src = тега IMG? Разбор данных JSON для Duplicatable Form для PHP для Mail Как получить целое число между двумя значениями из потока бит? Отслеживание посетителей IP / кликов в PHP Скобки, изменяющие семантику результата вызова функции Как-то php сломал doctype SQLSTATE Неизвестный сервер MySQL-сервера '' (2) в Laravel Как определить положение фигуры в изображении PHP

Я хочу сортировать 3-мерный массив в php

У меня есть следующий массив:

$inboxMessages = array( 105775 => array( //index is thread_id 0 => array( 'id' => 85, 'thread_id' => 105775, 'message' => "hello", 'created_at' => "May 20, 2015", 'datetime' => 1432118191, 'sender_id' => 13, ), 1 => array( 'id' => 70, 'thread_id' => 105775, 'message' => "hii", 'created_at' => "May 19, 2015", 'datetime' => 1432021227, 'sender_id' => 13, ) ), 224199 => array( //index is thread_id 0 => array( 'id' => 88, 'thread_id' => 224199, 'message' => "yessss...", 'created_at' => "May 20, 2015", 'datetime' => 1432306513, 'sender_id' => 14, ), 1 => array( //index is thread_id 'id' => 75, 'thread_id' => 224199, 'message' => "hellowwww...", 'created_at' => "May 19, 2015", 'datetime' => 1432021227, 'sender_id' => 14, ) ), 107917 => array( //index is thread_id 0 => array( 'id' => 56, 'thread_id' => 107917, 'message' => "how ru??", 'created_at' => "May 16, 2015", 'datetime' => 1431792155, 'sender_id' => 14, ), 1 => array( 'id' => 30, 'thread_id' => 107917, 'message' => "hi.. im fine.", 'created_at' => "May 6, 2015", 'datetime' => 1430920006, 'sender_id' => 14, ), 2 => array( 'id' => 30, 'thread_id' => 107917, 'message' => "hi!!!!..how ru??", 'created_at' => "May 6, 2015", 'datetime' => 1430920006, 'sender_id' => 14, ) ), 378552 => array( //index is thread_id 0 => array( 'id' => 108, 'thread_id' => 378552, 'message' => "hi", 'created_at' => "May 29, 2015", 'datetime' => 1432906923, 'sender_id' => 14, ), 1 => array( 'id' => 107, 'thread_id' => 378552, 'message' => "hi.", 'created_at' => "May 29, 2015", 'datetime' => 1432903194, 'sender_id' => 14, ) ) ); 

Итак, мне нужен вывод следующим образом:

 $inboxMessages = array( 378552 => array( //index is thread_id 0 => array( 'id' => 108, 'thread_id' => 378552, 'message' => "hi", 'created_at' => "May 29, 2015", 'datetime' => 1432906923, 'sender_id' => 14, ), 1 => array( 'id' => 107, 'thread_id' => 378552, 'message' => "hi.", 'created_at' => "May 29, 2015", 'datetime' => 1432903194, 'sender_id' => 14, ) ), 224199 => array( //index is thread_id 0 => array( 'id' => 88, 'thread_id' => 224199, 'message' => "yessss...", 'created_at' => "May 20, 2015", 'datetime' => 1432306513, 'sender_id' => 14, ), 1 => array( //index is thread_id 'id' => 75, 'thread_id' => 224199, 'message' => "hellowwww...", 'created_at' => "May 19, 2015", 'datetime' => 1432021227, 'sender_id' => 14, ) ), 105775 => array( //index is thread_id 0 => array( 'id' => 85, 'thread_id' => 105775, 'message' => "hello", 'created_at' => "May 20, 2015", 'datetime' => 1432118191, 'sender_id' => 13, ), 1 => array( 'id' => 70, 'thread_id' => 105775, 'message' => "hii", 'created_at' => "May 19, 2015", 'datetime' => 1432021227, 'sender_id' => 13, ) ), 107917 => array( //index is thread_id 0 => array( 'id' => 56, 'thread_id' => 107917, 'message' => "how ru??", 'created_at' => "May 16, 2015", 'datetime' => 1431792155, 'sender_id' => 14, ), 1 => array( 'id' => 30, 'thread_id' => 107917, 'message' => "hi.. im fine.", 'created_at' => "May 6, 2015", 'datetime' => 1430920006, 'sender_id' => 14, ), 2 => array( 'id' => 30, 'thread_id' => 107917, 'message' => "hi!!!!..how ru??", 'created_at' => "May 6, 2015", 'datetime' => 1430920006, 'sender_id' => 14, ) ), ); 

Я хочу отсортировать основной массив по значению массива datetime для thread_id .

В массиве thread_id уже выполняется сортировка.

Так что я просто хочу отсортировать основной массив thread_id .

Мне нужно, чтобы последнее время datetime находилось сверху на массиве

Я пробовал до сих пор И его работы для меня:

 function comp($a, $b) { if ($a[0]->datetime == $b[0]->datetime) { return 0; } return $a[0]->datetime > $b[0]->datetime ? -1 : 1; } uasort($inboxMessages, "comp"); 

А также попробуйте с id сообщения:

 function comp($a, $b) { if ($a[0]->id == $b[0]->id) { return 0; } return $a[0]->id > $b[0]->id ? -1 : 1; } uasort($inboxMessages, "comp"); 

Вы можете использовать uasort() следующим образом, чтобы получить следующий формат

 function comp($a, $b) { if ($a[0]['datetime'] == $b[0]['datetime']) { return 0; } return $a[0]['datetime'] > $b[0]['datetime'] ? -1 : 1; } uasort($inboxMessages, "comp"); 

Проверить демоверсию

Использовать uasort

 function cmp($a, $b) { if ($a[0]['datetime'] == $b[0]['datetime']) { return 0; } return ($a[0]['datetime'] < $b[0]['datetime']) ? 1 : -1; } uasort($inboxMessages, "cmp"); 

В зависимости от версии PHP вы можете указать «cmp» как анонимную функцию. Также имейте в виду, что этот метод основан на том факте, что каждый поток имеет хотя бы одно сообщение.