|
|
|
| Всем привет.
Есть многомерный массив вида:
$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 или может есть у кого-то функции готовые? Обшарил уже полинета и форум | |
|
|
|
|
|
|
|
для: Trivium
(18.09.2013 в 20:52)
| | >natsort не работает с многомерными массивами
А что мешает обойти его циклом?
<?
$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')
);
array_map('natsort', &$a);
|
| |
|
|
|
|
|
|
|
для: confirm
(19.09.2013 в 22:07)
| | Решил проблему. Сконвертил все массивы в строку и через usort сделал такую сортировку:
function cmp($a,$b) {
return strnatcmp($a["sizes"], $b["sizes"]);
}
|
| |
|
|
|
|
|
|
|
для: Trivium
(20.09.2013 в 13:47)
| | Оригинально, учитывая то, что у вас значения и так строки. | |
|
|
|
|
|
|
|
для: confirm
(20.09.2013 в 14:45)
| | Всё в одну сконверчено. | |
|
|
|
|
|
|
|
для: Trivium
(20.09.2013 в 14:52)
| | Вообще кошмар тогда. | |
|
|
|
|
|
|
|
для: confirm
(20.09.2013 в 14:55)
| | Зато всё работает раза в 2 быстрее, чем ты писал. | |
|
|
|
|
|
|
|
для: Trivium
(20.09.2013 в 15:03)
| | Я не знаю чего вы там написали, но нет в вашем примере ничего являющегося числом, все строки. А уж как написать, это дело второе. | |
|
|
|
|
|
|
|
для: confirm
(20.09.2013 в 15:08)
| | И при чём здесь наличие или отсутствие строк? Я ж написал что сконвертил всё в одну строку и сделал её подэлементом массива. И всё прекрасно работает, в отличии от твоего. | |
|
|
|
|
|
|
|
для: confirm
(20.09.2013 в 14:55)
| | Тем более проверять надо, прежде чем советовать на форумах. Твоя сортировка вообще непонятно как сортирует. | |
|
|
|
|
|
|
|
для: Trivium
(20.09.2013 в 15:07)
| | Не тыкать только, а уважать. Она сортирует по алгоритму "natural ordering", как это и делает nasort, о чем вы и говорили. Не понимаете этого, тогда читайте внимательно руководство. | |
|
|
|
|
|
|
|
для: confirm
(20.09.2013 в 15:11)
| | Ну вот возьми и проверь сначала, а потом советуй, умник. | |
|
|
|
|
|
|
|
для: Trivium
(20.09.2013 в 15:12)
| | Если не научитесь уважать собеседника, тыкать ему, можете ожидать проблем.
Мне незачем проверять, и так хорошо знаю, что такое "natural ordering", а вот вы этого видимо не представляете, поэтому читайте.
Развелось кодеров сопливых, да еще с гонором. | |
|
|
|
|
|
|
|
для: confirm
(20.09.2013 в 15:17)
| | Да потому-что ТЫ мне уже наверно на 5 теме отвечаешь и всё хамство своё и понты наровишься проявить. Это много кого напрягает. Не знаешь, а советуешь тупые грабли. Не проверил свой говнокод, а советуешь его другим. Я твой говнокод проверил и говорю тебе: он не работает. Какие ещё вопросы есть? Без сопливых знаем про натурально-нативную сортировку, хватит уже понты ломать. Не умеешь - не берись советовать. И выкать я на хамство откровенное никому не собираюсь. | |
|
|
|
|
|
|
|
для: Trivium
(20.09.2013 в 15:35)
| | Слюни то зачем распускать?
1. Вы, не я, упомянули nasort. А значит вы либо вообще не имеете представления как эта функция сортирует, либо не знаете чего вам надо.
2. Вы выставляете пример, в котором все значения строки - вопрос, а зачем конвертировать?
3. Если пример содержит не все вариации значений, то почему не описываете все, и если nasort не подходит, то почему указываете его?
Из всего этого следует, что ваш вопрос как игра в кошки мышки, да еще гонору под самое не хочу.
А я вас предупреждал - как аукнется, так и откликнется. Научитесь не тыкать людям, и описывать свой вопрос, иначе по выше сказанному только один вывод - вы не знаете то, что хотите использовать, и понту, так это с вашей стороны. А не потому, что я такой, и вы мне неприятны. Я добрый. | |
|
|
|
|
|
|
|
для: confirm
(20.09.2013 в 15:43)
| | Я прекрасно знаю нужна функция naTsort и зачем нужна функция strnatcmp. Без проверки вышеописанных кодов - считаю дальнейшее "общение" бессмысленным. Тем более, что я не вопрос уже задавал, а решил его ещё 2 дня назад. | |
|
|
|
|
|
|
|
для: Trivium
(20.09.2013 в 15:48)
| | Ну если знаете, то сами подумайте - вопрос один и пример соответствующий, а выясняется совсем иная ситуация, действительно кошмарная и не понятная, если проецировать ее на вопрос.
Решили и слава богу, но уж выставляя вопрос расставляйте все точки на "и", чтобы не было ситуаций, когда решение далеко от сущности самого вопроса, чтобы потом не считать кого-то дураком и виноватым. Наверное таким образом. | |
|
|
|