У меня есть мульти двумерный массив так:Сортировка многомерные массив по 3 значений, или разбить массив на 3 массивов по значению
maildate | mag | panel | status
2-22-16 | green | 1 | pending
2-22-16 | green | 3 | completed
2-22-16 | green | 2 | working
2-23-16 | red | 1 | pending
2-22-16 | blue | 1 | complete
Мне нужно отсортировать данные по первому, то дата, то МАГ а затем версию. Я попытался использовать эту функцию, и она хорошо работает для статуса, но я не могу заставить ее сделать дату в том же состоянии.
// function to sort mulitdimensional array by key
function array_sort($array, $on, $order=SORT_ASC){
$new_array = array();
$sortable_array = array();
if (count($array) > 0) {
foreach ($array as $k => $v) {
if (is_array($v)) {
foreach ($v as $k2 => $v2) {
if ($k2 == $on) {
$sortable_array[$k] = $v2;
}
}
} else {
$sortable_array[$k] = $v;
}
}
switch ($order) {
case SORT_ASC:
asort($sortable_array);
break;
case SORT_DESC:
arsort($sortable_array);
break;
}
foreach ($sortable_array as $k => $v) {
$new_array[$k] = $array[$k];
}
}
return $new_array;
}
// sort lblist array by status
$lblist = array_sort($lblist, 'status', SORT_ASC);
У меня также есть эта функция, которая, похоже, работает, но группы статуса разделяются.
function sortByOrder($a, $b){
if ($b['status'] == $a['status']) {
if ($b['maildate'] == $a['maildate']) {
if ($b['mag'] == $a['mag']) {
return $b['panel'] - $a['panel'];
}
else {
return $b['mag'] - $a['mag'];
}
}
else {
return $b['maildate'] - $a['maildate'];
}
}
else {
return $b['status'] - $a['status'];
}
}
usort($lblist, 'sortByOrder');
Я подумал, может разделить массив по статусу, как только это своего рода тем, чтобы держать их вместе, а затем делать другие виды на каждом «югу» массив.
Отлично. Благодарю. –