Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нативная соротировка многомерного массива на PHP

1.8K
18 сентября 2013 года
trivium
128 / / 31.01.2010
Всем привет.
Есть многомерный массив вида:
Код:
$a = array(
             0 => array(
                    0 => '4x100',
                    1 => '12',
                    2 => '5,1'),
             1 => array(
                    0 => '4x98',
                    1 => '19',
                    2 => '3,4'),
             2 => array(
                    0 => '4x114,4',
                    1 => '15',
                    2 => '2,1'),
...
)
И этот массив надо как-то отсортировать по всем параметрам, при чём надо учитывать, что первый параметр в каждом подмассиве (например 4x98) это строка, т.е. сортировать надо нативным способом. array_mulitsort перепробовал все варианты и она не сортирует нативно, natsort не работает с многомерными массивами и usort так же сортирует как-то непонятно. Как можно стандартными средствами PHP или может есть у кого-то функции готовые? Обшарил уже полинета и форум
446
18 сентября 2013 года
Meander
487 / / 04.09.2011
а если (временно) создать три одномерных массива, скопировать туда значения из соответствующих позиций исходного, отсортировать каждый одномерным сортером и переприсвоить упорядоченные элементы обратно в двумерный массив?
1.8K
18 сентября 2013 года
trivium
128 / / 31.01.2010
Решил проблему. Сконвертил все массивы в строку и через usort сделал такую сортировку:
 
Код:
function cmp($a,$b) {
    return strnatcmp($a["sizes"], $b["sizes"]);
}
414
19 сентября 2013 года
CassandraDied
763 / / 24.05.2012
А можно поинтересоваться, что значит "сортировать нативно"?
1.8K
19 сентября 2013 года
trivium
128 / / 31.01.2010
Цитата: CassandraDied
А можно поинтересоваться, что значит "сортировать нативно"?


Читайте в мануале про функцию natsort

414
19 сентября 2013 года
CassandraDied
763 / / 24.05.2012
А самому в двух словах объяснить религия не позволяет?
1.8K
19 сентября 2013 года
trivium
128 / / 31.01.2010
Сортировка строк "естественным" способом. В обычной "машинной" сортировке строк символ '1' имеет меньшее значение, чем '9'. И строка '4x100' будет идти раньше, чем строка '4x98' в сортировке по возрастанию. Функции типа strnatcmp и natsort решают эту проблему.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог