Jump to content
dimkaja357

Сортировка товаров по алгоритму NATURE ORDER(natsort)

Recommended Posts

Доброго времени суток, подскажите пожалуйста как можно реализовать сортировку По модели, я ее сделал, но названия моделей выглядят примерно так - AD 10...AD 20...AD 2...проблема в том что нужно отсортировать массив продуктов по принципу  NATURAL ORDER, можно ли это сделать с многомерным ассоцитивным массивом $products?

Share this post


Link to post
Share on other sites

<?php
$dirs 
= array(
  array(
'name' => 'First Folder', 'path' => 'sompath'),
  array(
'name' => 'second folder', 'path' => 'sompath2'),
  array(
'name' => 'Third Folder', 'path' => 'sompath3')
);

function 
so($a, $b) {
    return (
strcmp (strtolower($a['name']), strtolower($b['name'])));
}

 

uasort($arr, 'so');

 

var_dump ($arr);


?>

 

https://www.php.net/manual/ru/function.uasort.php

 

https://www.php.net/manual/ru/function.strcmp.php

Share this post


Link to post
Share on other sites
On 9/9/2019 at 9:10 AM, Yoda said:

<?php
$dirs 
= array(
  array(
'name' => 'First Folder', 'path' => 'sompath'),
  array(
'name' => 'second folder', 'path' => 'sompath2'),
  array(
'name' => 'Third Folder', 'path' => 'sompath3')
);

function 
so($a, $b) {
    return (
strcmp (strtolower($a['name']), strtolower($b['name'])));
}

 

uasort($arr, 'so');

 

var_dump ($arr);


?>

 

https://www.php.net/manual/ru/function.uasort.php

 

https://www.php.net/manual/ru/function.strcmp.php

 

ход ваших мыслей мне понятен, однако я явно что то не так делаю, $arr в вашем примере это $dirs? Вы не могли бы более подробно описать решение на примере стандартного массива в движке $products? какое вы в контроллере бы вывели будь у вас подобная задача

Share this post


Link to post
Share on other sites
2 часа назад, dimkaja357 сказал:

решение на примере стандартного массива в движке $products?

Но вам дали пример сортировки на sql - может там сразу сортировать?

Share this post


Link to post
Share on other sites
3 часа назад, dimkaja357 сказал:

 

ход ваших мыслей мне понятен, однако я явно что то не так делаю, $arr в вашем примере это $dirs? Вы не могли бы более подробно описать решение на примере стандартного массива в движке $products? какое вы в контроллере бы вывели будь у вас подобная задача

 

Да вы правильно поняли, я надергал образцов кода из разных мест для примера вам.

Решение описано выше. И это наиболее качественный способ "человеческой" сортировки. 
Средствами mysql подобное реализовать невозможно, так как strcmp - вот просто шикарно работает.
Также если не будете ленится и сходите по приведенным ссылкам в конце - там есть очень подробное описание на php.net с кучей примеров и подробным разбором работы методов.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.