Intereting Posts
запрос внутри цикла while показывает только 1 результат PHP найти и получить значение на основе другого из HTML-файла проанализированного файла PHP: json_encode vs serialize для хранения в базе данных MySQL? Запуск: невозможно загрузить динамическую библиотеку '/usr/lib/php/modules/module.so' APC демонстрирует 100% фрагментацию Как читать данные из заголовка SOAP на стороне клиента Не удалось получить символы с акцентом UTF-8 из Access через PDO_ODBC Монитор PHP для всех ошибок и журналов моих приложений и сайтов, журналов и т. Д. Переход к шаблону TWIG Как удалить папку с содержимым с помощью PHP Найти число вхождений определенной строки в группе символов WITH A CATCH Как надежно и быстро развиваться на удаленном сервере с локальной средой IDE? Laravel 5: используйте другую базу данных для тестирования и локальную Как объявить глобальную переменную в CodeIgniter 2.2? Ларавелл Красноречивые транзакции ORM

сортировать многомерный ассоциативный массив?

Хорошо, у меня есть массив, который используется для переноса имен, он выглядит так:

array(2) { [0]=> array(3) { ["firstName"]=> string(3) "Joe" ["lastName"]=> string(5) "Black" ["uid"]=> int(3225) } [1]=> array(3) { ["firstName"]=> string(4) "John" ["lastName"]=> string(3) "Doe" ["uid"]=> int(3516) } } 

Теперь, как мне отсортировать этот массив по lastName ?

У StackOverflow есть много похожих вопросов, но позвольте мне привести вам быстрый пример. Для этого вы можете использовать usort() .

Пример PHP 5.3 (не самый приятный, но может быть проще понять):

 uasort($array, function ($i, $j) { $a = $i['lastName']; $b = $j['lastName']; if ($a == $b) return 0; elseif ($a > $b) return 1; else return -1; }); 

AS, который я опубликовал в php.net , вы можете использовать эту функцию:

 <?php function sksort(&$array, $subkey="id", $sort_ascending=false) { if (count($array)) $temp_array[key($array)] = array_shift($array); foreach($array as $key => $val){ $offset = 0; $found = false; foreach($temp_array as $tmp_key => $tmp_val) { if(!$found and strtolower($val[$subkey]) > strtolower($tmp_val[$subkey])) { $temp_array = array_merge( (array)array_slice($temp_array,0,$offset), array($key => $val), array_slice($temp_array,$offset) ); $found = true; } $offset++; } if(!$found) $temp_array = array_merge($temp_array, array($key => $val)); } if ($sort_ascending) $array = array_reverse($temp_array); else $array = $temp_array; } ?> 

Короткие и многоразовые методы:

 usort($array, 'nameSort'); function nameSort($a, $b) { return strcmp($a['lastName'], $b['lastName']); }