Intereting Posts
Как найти целое слово в строке на PHP без случайных совпадений? Как вы пишете хороший PHP-код без использования фреймворка? Как проверить, соответствует ли дата в заданном диапазоне дней + месяца? PHP-кодирование с помощью DOMDocument Форма PHP для базы данных и электронной почты Zend Framework 2 – ZFCUser – Как исключить целевую страницу из auth Есть ли преимущество для этого хэша для обеспечения безопасности? Есть ли способ получить размер переменной PHP в байтах? URL переписать, чтобы добавить каталог в начале URL-адреса Как предотвратить одновременные логины пользователей на сайте PHP / MySQL? javascript включает файл в onclick Facebook PHP SDK – Пользователь по-прежнему отображается как зарегистрированный в веб-приложении, хотя выходил из Facebook Regex, чтобы получить только символы без пробелов внутри специальных тегов Возобновляемые загрузки при использовании PHP для отправки файла? Как я могу использовать in_array, если игла представляет собой массив?

Сортировка многомерного массива в PHP?

У меня такой массив

array(5) { [0]=> array(5) { [0]=> string(7) "jannala" [1]=> string(10) "2009-11-16" [2]=> string(29) " <p>Jotain mukavaa.</p> " [3]=> int(12) [4]=> int(1270929600) } [1]=> array(5) { [0]=> string(7) "jannala" [1]=> string(10) "2009-11-16" [2]=> string(51) " <p>Saapumiserä II/09 astuu palvelukseen</p> " [3]=> int(11) [4]=> int(1270929600) } ... } 

Что мне нужно сделать, так это отсортировать массив на основе [x] [4] массива (значение временной метки unix). Как я могу это достичь?

используйте функцию сравнения, в этом случае он сравнивает значение временной метки unix массива:

 function compare($x, $y) { if ( $x[4] == $y[4] ) return 0; else if ( $x[4] < $y[4] ) return -1; else return 1; } 

а затем вызовите его с помощью функции usort например:

 usort($nameOfArray, 'compare'); 

Эта функция сортирует массив по его значениям, используя предоставленную пользователем функцию сравнения. Если массив, который вы хотите отсортировать, нужно отсортировать по некоторым нетривиальным критериям, вы должны использовать эту функцию.

Взято из PHP: usort manual.

Только моя первоначальная мысль: оберните каждый из вложенных массивов в объект (экземпляр класса), так что после сортировки по определенному полю (в данном случае, отметке времени unix) вы можете легко получить доступ к другой информации, используя тот же ссылка на объект.

Таким образом, ваш вложенный массив массивов может стать массивом объектов, каждый из которых имеет метод «сортировки».

Я боролся с функцией «сравнить» выше, но смог получить эту работу:

 function cmp($a, $b) { if ($a['4'] == $b['4']) { return 0; } return ($a['4'] > $b['4']) ? -1 : 1; } usort($array, "cmp"); 

(Обратите внимание, что это также нисходящий, а не восходящий, сортировка.)