Приветствую! К примеру есть такой массивчик Код (PHP): array( array('01', 'ppp1', 'xxx', 'yyy', ... ,), array('01', 'ppp7', 'xxx', 'yyy', ... ,), array('01', 'ppp2', 'xxx', 'yyy', ... ,), array('01', 'ppp4', 'xxx', 'yyy', ... ,), ... , ); Он передается в JS посредством JSON & AJAX. Мне нужна сортировка по 2му полю каждого массива, максимум, что я смог придумать - это Код (PHP): uasort($childrenSessions, function($a, $b) { return strnatcmp($a[1], $b[1]); }); Но естественно это не работает так как я хочу. Помогите с проблемкой плиз
1. там сортировка по дате, а не по строковым полям (т.е. буквы & цифры). 2. У меня тоже есть реализация с uasort, которая не работает.
Слушай, ну 20 секунд - и всё работает. Только что проверил у себя. Функция cmp без изменений практически - только ключ нужный подставил и всё Код (PHP): <pre><?php $arr = array( array('01', 'ppp1', 'xxx', 'yyy'), array('01', 'ppp7', 'xxx', 'yyy'), array('01', 'ppp2', 'xxx', 'yyy'), array('01', 'ppp4', 'xxx', 'yyy') ); function cmp($a, $b) { return(($a[1] === $b[1]) ? 0 : (($a[1] > $b[1]) ? 1 : -1)); } uasort($arr, 'cmp'); print_r($arr); ?></pre> Добавлено спустя 7 минут 11 секунд: Вот лучше так, чтобы правильно сортировалось и когда у тебя после ppp идёт число большее чем 9: Код (PHP): <pre><?php $arr = array( array('01', 'ppp1', 'xxx', 'yyy'), array('01', 'ppp7', 'xxx', 'yyy'), array('01', 'ppp2', 'xxx', 'yyy'), array('01', 'ppp4', 'xxx', 'yyy'), array('01', 'ppp12', 'xxx', 'yyy') ); function cmp($a, $b) { $first = (int) substr($a[1], 3); $second = (int) substr($b[1], 3); return(($first === $second) ? 0 : (($first > $second) ? 1 : -1)); } uasort($arr, 'cmp'); print_r($arr); ?></pre>