Есть такая проблемма, пытаюсь отсортировать многомерный массив с помощью array_multisort, но так как колличество параметров не известно то использую call_user_func_array('array_mu ltisort', $params); Сортировка проходит, все хорошо, но не получается задать направления (SORT_ASC,SORT_DESC). Т.е. если $params[1] идет типа string, то он просит дать ему "array or a sort flag". Причем массив должен быть той же мерности, что и массивы данных, иначе ругается ( Array sizes are inconsistent). Но если дать ему массив той же мерности, то ошибок нет, но и напраления сортировки тоже нет. Собственно вопрос, как таки задать напраление сортировки с помощью аргумента для вызова через call_user_func_array('array_mu ltisort', $params); ? function get_fields($data, $order_by) { $order_row = preg_split("/[\s,]+/", $order_by); for ($i=0;$i<count($order_row);$i++) { foreach ($data as $key => $row) { $tmp[$i][$key] = $row[$order_row[$i]]; } } return $tmp; } function ordering($data, $order_by) { $tmp = get_fields($data, $order_by); $params = array(); foreach($tmp as &$t){ $params[] = &$t; } $params[1] = array("SORT_DESC","SORT_DESC","SORT_DESC","SORT_DESC"); // like that no warning but no sorting $params[] = &$data; call_user_func_array('array_multisort', $params); return array_pop($params); } $data = array ( array('id' => 1,'name' => 'Barack','city' => 9), array('id' => 7,'name' => 'boris','city' => 2), array('id' => 3,'name' => 'coris','city' => 2), array('id' => 3,'name' => 'coris','city' => 2) ); $order_by = "city desc, name"; echo "<br>ORDER BY $order_by<br>"; $ordered = ordering($data, $order_by); echo "<pre>"; var_dump($ordered); echo "</pre>";