IvanFantoM
@IvanFantoM
PHP-разработчик

Как отсортировать массив в привычном для человека порядке (natsort не помогает)?

Помогите организовать сортировку товаров по артикулу.
Сортировка с помощью MySQL и обработка массива функцией natsort дают не совсем нужный результат.

Есть массив артикулов:
$sku = array[
"ПХ 01",
"ПХ 016",
"ПХ 02",
"ПХ 10",
"ПХ2 11", // Уже другой а вид артикула
"ПХ 100",
"ПХ 101",
"ПХ 20",
"ПХ 21",
"ПХ 201",
];

Сортировка с помощью php функции natsort выдает следующий массив:
$sku = array[
"ПХ 01",
"ПХ 016",
"ПХ 02",
"ПХ2 11", // Уже другой а вид артикула
"ПХ 10",
"ПХ 20",
"ПХ 21",
"ПХ 100",
"ПХ 101",
"ПХ 201",
];

Хотелось бы чтобы в результате сортировки элемент "ПХ 016" шел после "ПХ 10", а элемент "ПХ2 11" шел после всех "ПХ", так как относится к другой группе товаров.
  • Вопрос задан
  • 271 просмотр
Решения вопроса 1
sam002
@sam002
Линуксойд, кодер, немного физик.
SELECT * FROM table ORDER BY CAST(MID(articul,3, LENGTH(articul)-2) AS unsigned) ASC;

Как-то так, подбирайте необходимые преобразования: dev.mysql.com/doc/refman/5.6/en/string-functions.html
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
usort() - сортируйте по своим правилам!
Ответ написан
Комментировать
@AKBAR_ODILOV
Необычный чел.
Итак, идея такова, я использую bubble sort, это не функция это просто метод
Во первых я сортировал массив по длине элементов а потом сортировал сами элементы, в цикле есть функция swap оно меняет значение 2-ух переменных но я не знаю есть ли она в пхн если нет думаю самим писать эту функцию не сложно а также в скрипте я не ставил в некоторых местах знак $
//Следующие три строки отвечают за сортировку
for($i=0; $i
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы