Всем привет! Уже почти час сижу бьюсь с массивами... Пример. Есть что-то типа ленты событий. Данные собираются с разных источников по формату: lent[ID][time]=время события (timestamp) lent[ID][link]=ссылка на детали lent[ID][user]=юзер Надо отсортировать массив lent так, чтобы самое последние событие стало первым в списке (desc,против алфавита). Но как это сделать чтобы отсортировать не только lent[ID][time], а и link и user?
разобрался сам. может кому надо... PHP: class sort { private $array; private $sortKey; private $f; private $l; public function sort($array, $sortKey, $isAsc = true) { $this->array = $array; $this->sortKey = $sortKey; if ($isAsc) { $this->f = +1; $this->l = -1; } else { $this->f = -1; $this->l = +1; } return $this->get(); } public function get() { usort($this->array, array($this, 'cmp')); return $this->array; } private function cmp($str1, $str2) { if ($str1[$this->sortKey] == $str2[$this->sortKey]) return 0; return $str1[$this->sortKey] > $str2[$this->sortKey] ? $this->f : $this->l; } }
Hight link затем что у каждого типа события разные ссылки. напр на /albums/?album_id=323 и /post/?owner=123&id=4343. это так, пример. user - айди юзера, выполнившего событие (добавившего коммент и т п)
Я думаю, что надо переписать нормально. lent[ID][time]=время события (timestamp) lent[ID][link]=ссылка на детали lent[ID][user]=юзер это переделать на это: lent[time][id]=время события (timestamp) lent[time][id][link]=ссылка на детали lent[time][id][user]=юзер потом krsort(lent) - сортируем в обратном порядке по времени, а потом обходим массив и не паримся. // p.s. Ещё не проснулся, могу стормозить.