Если я понимаю, что вам нужно сделать, вы можете использовать usort:
usort($array, function($a, $b) {
if ($a['date_cat'] > $b['date_cat']) return 1;
if ($a['date_cat'] < $b['date_cat']) return -1;
if ($a['time_tim'] > $b['time_tim']) return 1;
if ($a['time_tim'] < $b['time_tim']) return -1;
return 0;
});
Мне кажется, что ваша функция работает немного извращенно.Вы извлекаете столбец вашего массива, чтобы создать массив для сортировки, связанный с исходным массивом.Потребовалось несколько чтений и проверка php вручную, чтобы понять ваш код (слишком плохо), вы должны (для меня) отключить создание массива index в другую функцию, прежде чем вызывать сортировку.
Если вам нужен динамический выбор столбцов, возможно, вы можете использовать замыкания (PHP 5.3+?):
function your_sort($orderby, $array) {
return usort($array, function ($a, $b) use ($orderby) {
foreach($orderby as $field) {
if ($a[$field] > $b[$field]) return 1;
if ($a[$field] < $b[$field]) return -1;
}
return 0;
});
}
И затем вы можете вызвать функцию следующим образом:
your_sort(array('date_cat','time_tim'), $array);