Сортировка по двум (нескольким) значениям ассоциативного массива в PHP
Код
$orderBy = [
'PROPERTY_COLOR_NAME' => 'asc',
'PROPERTY_SIZE_NAME_PART1' => 'asc',
];
uasort($array, function ($a, $b) use ($orderBy) {
$result = 0;
foreach ($orderBy as $key => $value) {
if ($a[$key] == $b[$key]) {
continue;
}
$result = ($a[$key] < $b[$key]) ? -1 : 1;
if ($value == 'desc') {
$result = -$result;
}
break;
}
return $result;
});
А также, чтобы хорошо искалось, добавим: двойная сортировка, сортировка массива по двум (нескольким) полям.
Похожие записи
Речь в заметке пойдёт о модуле PHP7, покдлюченном как модуль апача на всём сервере, и PHP5.6, подключенном как PHP-CGI у нужных сайтов.
И речь пойдёт не о быстрой смене версии php на всём сервере, а именно о том, чтобы, например, все сайты на сервере работали с PHP7, а один или несколько, например с PHP5.
Поисковики их так сильно любят, что SEO-специалисты слёзно просят их внедрить на сайт.
В декабре того года сменил связку Apache + mod-php (на своём сервере) на связку Nginx + php-fpm, чему несказанно рад. Сайты, даже визуально, стали откликаться быстрее. До и после переезда на примере своего блога замерил скорость генерации страницы, отдачи статики сервером, потребление памяти (php7) и т.д. Под катом немного сравнительных цифр.
Добавить комментарий
3 комментария
А чем array_multisort не подошёл?
array_multisort умеет сортировать по ключам ассоциативного массива, сохраняя при этом ключи?
Умеет. В доках приведён пример http://php.net/manual/ru/function.array-multisort.php