Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2016, 23:45   #1
SQLPowerUser
Форумчанин
 
Аватар для SQLPowerUser
 
Регистрация: 19.01.2015
Сообщений: 158
Стрелка PHP. Сортировка многомерного ассоциативного массива по ключу

В гугле много примеров, но они для сортировки по значению, которое в ключе. А если нужно, чтобы сами ключи были отсортированы? Я вот столкнулся с такой редкой задачей...
Для сортировки по ключу, в PHP есть функция ksort. Для массива, где нужно сортировать по ключу1, а потом по ключу2, функцию ksort надо прогнать 2 раза. И при этом перестроить массив. Велосипед у меня получился буквально из 2-х строчек (c PHP 5, в цикле foreach можно изменить массив, используя ссылочный оператор &)
PHP код:
ksort($arr);
foreach(
$arr as &$k) {ksort($k);} 
Может, это пригодится это тому, кто столкнется с похожей задачей...

Пример
PHP код:
<?php
$arr 
= [
  
'Bb' => ['поезд' => ['val' => 'elem B 2''styleIdx' => 'bbbb']],
  
'Aa' => ['яблоко' => ['val' => 'elem A 2''styleIdx' => 'style2']],
  
'Cc' => ['стрекоза' => ['val' => 'elem C three''styleIdx' => 'cccc']],
];
$arr['Aa']['абрикос']['val'] = 'elem A one';
$arr['Aa']['абрикос']['styleIdx'] = 'style1';
$arr['Bb']['автомобиль']['val'] = 'elem B one';
$arr['Bb']['автомобиль']['styleIdx'] = 'style2';
$arr['Cc']['муравей']['val'] = 'elem C 2';
$arr['Cc']['муравей']['styleIdx'] = 'style3';

echo 
'----------------------- Исходный массив -----------------------------';
echo 
'<pre>'print_r($arr,true), '</pre>';

ksort($arr);
foreach(
$arr as &$k) {ksort($k);}

echo 
'<br> ----------------------- Отсортирован по ключам -----------------------------';
echo 
'<pre>'print_r($arr,true), '</pre>';
?>
SQLPowerUser вне форума Ответить с цитированием
Старый 19.10.2016, 08:40   #2
SQLPowerUser
Форумчанин
 
Аватар для SQLPowerUser
 
Регистрация: 19.01.2015
Сообщений: 158
По умолчанию

Сортировка неограниченного вложения уровней (через рекурсию)
http://stackoverflow.com/questions/4...h-level-in-php
SQLPowerUser вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание класса шаблона, ассоциативного массива The New Guy Visual C++ 2 05.07.2015 00:02
(С++) Шаблонный класс ассоциативного массива с использованием вектора Алексеева Евгения Помощь студентам 0 12.05.2015 20:34
Сортировка многомерного массива KuckaMAXHATKA PHP 1 12.06.2014 19:24
Пример глобального ассоциативного массива ? AlienNation C# (си шарп) 4 12.07.2012 12:21
Сортировка многомерного массива Evgen1503 Помощь студентам 0 29.01.2010 13:59