За последние 24 часа нас посетили 15579 программистов и 1550 роботов. Сейчас ищут 867 программистов ...

Произвольная сортировка многомерных массивов

Тема в разделе "Прочие вопросы по PHP", создана пользователем starki, 14 апр 2008.

  1. starki

    starki Активный пользователь

    С нами с:
    14 апр 2008
    Сообщения:
    2
    Симпатии:
    0
    Адрес:
    Краснознаменск, МО
    Всегда пользовался очень приятной функцией, которая позволяла отсортировать массив как душе угодно. http://ru2.php.net/manual/en/function.a ... .php#60401
    PHP:
    1.  
    2. <?php
    3. function arrayColumnSort(){
    4.     $n = func_num_args();
    5.     $ar = func_get_arg($n-1);
    6.     if(!is_array($ar))return false;
    7.     for($i = 0; $i < $n-1; $i++)$col[$i] = func_get_arg($i);
    8.     foreach($ar as $key => $val)foreach($col as $kkey => $vval)if(is_string($vval))${"subar$kkey"}[$key] = $val[$vval];
    9.     $arv = array();
    10.     foreach($col as $key => $val)$arv[] = (is_string($val) ? ${"subar$key"} : $val);
    11.     $arv[] = $ar;
    12.     call_user_func_array("array_multisort", $arv);
    13.     return $ar;
    14. }
    15.  
    16.   $test["pete"]['points']=1;
    17.   $test["pete"]['name']='Peter';
    18.  
    19.   $test["mike"]['points']=5;
    20.   $test["mike"]['name']='Mike';
    21.  
    22.   $test["zoo"]['points']=2;
    23.   $test["zoo"]['name']='John Zoo';
    24.  
    25.   $test["ab"]['points']=2;
    26.   $test["ab"]['name']='John Ab';
    27.  
    28.   $test1 = $test;
    29.  
    30.   asort($test1);
    31.  
    32.   $test2 = arrayColumnSort("points", SORT_DESC, SORT_NUMERIC, "name", SORT_ASC, SORT_STRING, $test);
    33.  
    34.   print_r($test1); // asort
    35.   print_r($test2); // arrayColumnSort
    36.  
    37. ?>
    38.  
    С переходом на 5-ю версию PHP заметил, что она перестала работать. Если кто-то разобрался и пофиксил причину - поделитесь, плз. Может у кого есть другое решение. У меня мозг клинит на этом мультисорте.
     
  2. starki

    starki Активный пользователь

    С нами с:
    14 апр 2008
    Сообщения:
    2
    Симпатии:
    0
    Адрес:
    Краснознаменск, МО
    http://www.phpclasses.org/browse/package/2056.html
    Примерно такой же по функциональности класс. Не так лаконично как в примере выше, но проблему решает. Тем не менее если у кого-то есть фикс первый код - было бы неплохо.