Перейти к основному содержимому

Сортировка матрицы

· 1 мин. чтения

Сортировку можно производить на стороне сервера в БД (самое логичное решение), но зачастую система не продумана заранее настолько и получается что данные приходится выдирать из разных таблиц, между которыми нет очевидных связей. Поэтому сортировать приходится через серверные технологии или даже через javascript на стороне клиента..

Средствами PHP насколько мне известно пока невозможно нормально отсортировать - функции uksort и ksort сортируют по ключам массива, но просто вписать данные столбца в качестве ключа нельзя если могут появится одинаковые ключи.

Небольшая функция на будущее.

  /**
* Sorts matrix by column
*
* @param array $arrMatrix
* @param mixed $col
* @param boolean $direction
* @return array
*/
function sort_matrix($arrMatrix,$col=0,$direction=1){
$result=array();
foreach($arrMatrix as $var => $val){
$set=false;
foreach($result as $var2 => $val2){
if($set==false){
if($val[$col]>$val2[$col] && $direction || $val[$col]<$val2[$col] && !$direction){
$temp=array();
foreach($result as $var3 => $val3){
if($var3==$var2) $set=true;
if($set){
$temp[$var3]=$val3;
unset($result[$var3]);
}
}
$result[$var]=$val;
foreach($temp as $var3 => $val3)
$result[$var3]=$val3;
}
}
}
if(!$set) $result[$var]=$val;
}
return $result;
}