dimkaja357 Опубліковано: 9 вересня 2019 Share Опубліковано: 9 вересня 2019 Доброго времени суток, подскажите пожалуйста как можно реализовать сортировку По модели, я ее сделал, но названия моделей выглядят примерно так - AD 10...AD 20...AD 2...проблема в том что нужно отсортировать массив продуктов по принципу NATURAL ORDER, можно ли это сделать с многомерным ассоцитивным массивом $products? Надіслати Поділитися на інших сайтах More sharing options... spectre Опубліковано: 9 вересня 2019 Share Опубліковано: 9 вересня 2019 http://www.mysqltutorial.org/mysql-natural-sorting/ Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 9 вересня 2019 Share Опубліковано: 9 вересня 2019 <?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 Надіслати Поділитися на інших сайтах More sharing options... dimkaja357 Опубліковано: 11 вересня 2019 Автор Share Опубліковано: 11 вересня 2019 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? какое вы в контроллере бы вывели будь у вас подобная задача Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 11 вересня 2019 Share Опубліковано: 11 вересня 2019 2 часа назад, dimkaja357 сказал: решение на примере стандартного массива в движке $products? Но вам дали пример сортировки на sql - может там сразу сортировать? Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 11 вересня 2019 Share Опубліковано: 11 вересня 2019 3 часа назад, dimkaja357 сказал: ход ваших мыслей мне понятен, однако я явно что то не так делаю, $arr в вашем примере это $dirs? Вы не могли бы более подробно описать решение на примере стандартного массива в движке $products? какое вы в контроллере бы вывели будь у вас подобная задача Да вы правильно поняли, я надергал образцов кода из разных мест для примера вам. Решение описано выше. И это наиболее качественный способ "человеческой" сортировки. Средствами mysql подобное реализовать невозможно, так как strcmp - вот просто шикарно работает. Также если не будете ленится и сходите по приведенным ссылкам в конце - там есть очень подробное описание на php.net с кучей примеров и подробным разбором работы методов. Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... dimkaja357 Опубліковано: 23 вересня 2019 Автор Share Опубліковано: 23 вересня 2019 On 9/11/2019 at 10:54 AM, Yoda said: Да вы правильно поняли, я надергал образцов кода из разных мест для примера вам. Решение описано выше. И это наиболее качественный способ "человеческой" сортировки. Средствами mysql подобное реализовать невозможно, так как strcmp - вот просто шикарно работает. Также если не будете ленится и сходите по приведенным ссылкам в конце - там есть очень подробное описание на php.net с кучей примеров и подробным разбором работы методов. я извиняюсь но мне не совсем понятно как работает данная функция function so($a, $b) { return (strcmp (strtolower($a['name']), strtolower($b['name']))); } в ней 2 аргумента, я понимаю это 2 массива, так? не совсем понятно как я могу это применить к одному большому массиву products в котором их тысячи могут быть...как то в цикле эту функцию выводить, и подставлять значения массива туда? получается первый аргумент это 1 продукт в массиве, второй это 2 продукт, а в самой функции return (strcmp (strtolower($a['name']), strtolower($b['name']))); это получается сравниваются нужные мне индексы? в моем случае это будет что то наподобии - $product[0]['model'] и $product[1]['model'] ? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Сортировка товаров по алгоритму NATURE ORDER(natsort) Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
spectre Опубліковано: 9 вересня 2019 Share Опубліковано: 9 вересня 2019 http://www.mysqltutorial.org/mysql-natural-sorting/ Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 9 вересня 2019 Share Опубліковано: 9 вересня 2019 <?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 Надіслати Поділитися на інших сайтах More sharing options... dimkaja357 Опубліковано: 11 вересня 2019 Автор Share Опубліковано: 11 вересня 2019 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? какое вы в контроллере бы вывели будь у вас подобная задача Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 11 вересня 2019 Share Опубліковано: 11 вересня 2019 2 часа назад, dimkaja357 сказал: решение на примере стандартного массива в движке $products? Но вам дали пример сортировки на sql - может там сразу сортировать? Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 11 вересня 2019 Share Опубліковано: 11 вересня 2019 3 часа назад, dimkaja357 сказал: ход ваших мыслей мне понятен, однако я явно что то не так делаю, $arr в вашем примере это $dirs? Вы не могли бы более подробно описать решение на примере стандартного массива в движке $products? какое вы в контроллере бы вывели будь у вас подобная задача Да вы правильно поняли, я надергал образцов кода из разных мест для примера вам. Решение описано выше. И это наиболее качественный способ "человеческой" сортировки. Средствами mysql подобное реализовать невозможно, так как strcmp - вот просто шикарно работает. Также если не будете ленится и сходите по приведенным ссылкам в конце - там есть очень подробное описание на php.net с кучей примеров и подробным разбором работы методов. Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... dimkaja357 Опубліковано: 23 вересня 2019 Автор Share Опубліковано: 23 вересня 2019 On 9/11/2019 at 10:54 AM, Yoda said: Да вы правильно поняли, я надергал образцов кода из разных мест для примера вам. Решение описано выше. И это наиболее качественный способ "человеческой" сортировки. Средствами mysql подобное реализовать невозможно, так как strcmp - вот просто шикарно работает. Также если не будете ленится и сходите по приведенным ссылкам в конце - там есть очень подробное описание на php.net с кучей примеров и подробным разбором работы методов. я извиняюсь но мне не совсем понятно как работает данная функция function so($a, $b) { return (strcmp (strtolower($a['name']), strtolower($b['name']))); } в ней 2 аргумента, я понимаю это 2 массива, так? не совсем понятно как я могу это применить к одному большому массиву products в котором их тысячи могут быть...как то в цикле эту функцию выводить, и подставлять значения массива туда? получается первый аргумент это 1 продукт в массиве, второй это 2 продукт, а в самой функции return (strcmp (strtolower($a['name']), strtolower($b['name']))); это получается сравниваются нужные мне индексы? в моем случае это будет что то наподобии - $product[0]['model'] и $product[1]['model'] ? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Сортировка товаров по алгоритму NATURE ORDER(natsort) Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV
Yoda Опубліковано: 9 вересня 2019 Share Опубліковано: 9 вересня 2019 <?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 Надіслати Поділитися на інших сайтах More sharing options...
dimkaja357 Опубліковано: 11 вересня 2019 Автор Share Опубліковано: 11 вересня 2019 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? какое вы в контроллере бы вывели будь у вас подобная задача Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 11 вересня 2019 Share Опубліковано: 11 вересня 2019 2 часа назад, dimkaja357 сказал: решение на примере стандартного массива в движке $products? Но вам дали пример сортировки на sql - может там сразу сортировать? Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 11 вересня 2019 Share Опубліковано: 11 вересня 2019 3 часа назад, dimkaja357 сказал: ход ваших мыслей мне понятен, однако я явно что то не так делаю, $arr в вашем примере это $dirs? Вы не могли бы более подробно описать решение на примере стандартного массива в движке $products? какое вы в контроллере бы вывели будь у вас подобная задача Да вы правильно поняли, я надергал образцов кода из разных мест для примера вам. Решение описано выше. И это наиболее качественный способ "человеческой" сортировки. Средствами mysql подобное реализовать невозможно, так как strcmp - вот просто шикарно работает. Также если не будете ленится и сходите по приведенным ссылкам в конце - там есть очень подробное описание на php.net с кучей примеров и подробным разбором работы методов. Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... dimkaja357 Опубліковано: 23 вересня 2019 Автор Share Опубліковано: 23 вересня 2019 On 9/11/2019 at 10:54 AM, Yoda said: Да вы правильно поняли, я надергал образцов кода из разных мест для примера вам. Решение описано выше. И это наиболее качественный способ "человеческой" сортировки. Средствами mysql подобное реализовать невозможно, так как strcmp - вот просто шикарно работает. Также если не будете ленится и сходите по приведенным ссылкам в конце - там есть очень подробное описание на php.net с кучей примеров и подробным разбором работы методов. я извиняюсь но мне не совсем понятно как работает данная функция function so($a, $b) { return (strcmp (strtolower($a['name']), strtolower($b['name']))); } в ней 2 аргумента, я понимаю это 2 массива, так? не совсем понятно как я могу это применить к одному большому массиву products в котором их тысячи могут быть...как то в цикле эту функцию выводить, и подставлять значения массива туда? получается первый аргумент это 1 продукт в массиве, второй это 2 продукт, а в самой функции return (strcmp (strtolower($a['name']), strtolower($b['name']))); это получается сравниваются нужные мне индексы? в моем случае это будет что то наподобии - $product[0]['model'] и $product[1]['model'] ? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Сортировка товаров по алгоритму NATURE ORDER(natsort)
chukcha Опубліковано: 11 вересня 2019 Share Опубліковано: 11 вересня 2019 2 часа назад, dimkaja357 сказал: решение на примере стандартного массива в движке $products? Но вам дали пример сортировки на sql - может там сразу сортировать? Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 11 вересня 2019 Share Опубліковано: 11 вересня 2019 3 часа назад, dimkaja357 сказал: ход ваших мыслей мне понятен, однако я явно что то не так делаю, $arr в вашем примере это $dirs? Вы не могли бы более подробно описать решение на примере стандартного массива в движке $products? какое вы в контроллере бы вывели будь у вас подобная задача Да вы правильно поняли, я надергал образцов кода из разных мест для примера вам. Решение описано выше. И это наиболее качественный способ "человеческой" сортировки. Средствами mysql подобное реализовать невозможно, так как strcmp - вот просто шикарно работает. Также если не будете ленится и сходите по приведенным ссылкам в конце - там есть очень подробное описание на php.net с кучей примеров и подробным разбором работы методов. Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... dimkaja357 Опубліковано: 23 вересня 2019 Автор Share Опубліковано: 23 вересня 2019 On 9/11/2019 at 10:54 AM, Yoda said: Да вы правильно поняли, я надергал образцов кода из разных мест для примера вам. Решение описано выше. И это наиболее качественный способ "человеческой" сортировки. Средствами mysql подобное реализовать невозможно, так как strcmp - вот просто шикарно работает. Также если не будете ленится и сходите по приведенным ссылкам в конце - там есть очень подробное описание на php.net с кучей примеров и подробным разбором работы методов. я извиняюсь но мне не совсем понятно как работает данная функция function so($a, $b) { return (strcmp (strtolower($a['name']), strtolower($b['name']))); } в ней 2 аргумента, я понимаю это 2 массива, так? не совсем понятно как я могу это применить к одному большому массиву products в котором их тысячи могут быть...как то в цикле эту функцию выводить, и подставлять значения массива туда? получается первый аргумент это 1 продукт в массиве, второй это 2 продукт, а в самой функции return (strcmp (strtolower($a['name']), strtolower($b['name']))); это получается сравниваются нужные мне индексы? в моем случае это будет что то наподобии - $product[0]['model'] и $product[1]['model'] ? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Yoda Опубліковано: 11 вересня 2019 Share Опубліковано: 11 вересня 2019 3 часа назад, dimkaja357 сказал: ход ваших мыслей мне понятен, однако я явно что то не так делаю, $arr в вашем примере это $dirs? Вы не могли бы более подробно описать решение на примере стандартного массива в движке $products? какое вы в контроллере бы вывели будь у вас подобная задача Да вы правильно поняли, я надергал образцов кода из разных мест для примера вам. Решение описано выше. И это наиболее качественный способ "человеческой" сортировки. Средствами mysql подобное реализовать невозможно, так как strcmp - вот просто шикарно работает. Также если не будете ленится и сходите по приведенным ссылкам в конце - там есть очень подробное описание на php.net с кучей примеров и подробным разбором работы методов. Надіслати Поділитися на інших сайтах More sharing options...
dimkaja357 Опубліковано: 23 вересня 2019 Автор Share Опубліковано: 23 вересня 2019 On 9/11/2019 at 10:54 AM, Yoda said: Да вы правильно поняли, я надергал образцов кода из разных мест для примера вам. Решение описано выше. И это наиболее качественный способ "человеческой" сортировки. Средствами mysql подобное реализовать невозможно, так как strcmp - вот просто шикарно работает. Также если не будете ленится и сходите по приведенным ссылкам в конце - там есть очень подробное описание на php.net с кучей примеров и подробным разбором работы методов. я извиняюсь но мне не совсем понятно как работает данная функция function so($a, $b) { return (strcmp (strtolower($a['name']), strtolower($b['name']))); } в ней 2 аргумента, я понимаю это 2 массива, так? не совсем понятно как я могу это применить к одному большому массиву products в котором их тысячи могут быть...как то в цикле эту функцию выводить, и подставлять значения массива туда? получается первый аргумент это 1 продукт в массиве, второй это 2 продукт, а в самой функции return (strcmp (strtolower($a['name']), strtolower($b['name']))); это получается сравниваются нужные мне индексы? в моем случае это будет что то наподобии - $product[0]['model'] и $product[1]['model'] ? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts