сортировка сложного массива, проблема версий пхп

xInOrK

Новичок
сортировка сложного массива, проблема версий пхп

Есть такая функция отлично работает при сортировке сложного массива в PHP 5.2.0-dev (Apache 2.2.3)(Win32)
Но не работает под PHP 5.2.1 (Apache2 FreeBSD)

Почему перепробовал уже всё что можно облазял все мануалы что-то не могу всё равно понять почему...
Использую так:
$messages_=arrayColumnSort("new", SORT_DESC, SORT_NUMERIC, "count", SORT_DESC, SORT_NUMERIC, $messages_);

PHP:
function arrayColumnSort()
{
  $n = func_num_args();
  $ar = func_get_arg($n-1);
  if(!is_array($ar))
  {
    return false;
  }
  else
  {

    for($i = 0; $i < $n-1; $i++)
    {
      $col[$i] = func_get_arg($i);
    }
    foreach($ar as $key => $val)
    {
      foreach($col as $kkey => $vval)
      {
        if(is_string($vval))
        {
          ${"subar$kkey"}[$key] = $val[$vval];
        }
      }
    }
    $arv = array();
    foreach($col as $key => $val)
    {
      $arv[] = (is_string($val) ? ${"subar$key"} : $val);
    }
    $arv[] = $ar;
    call_user_func_array("array_multisort", $arv);
    return $ar;
  }
}
 

Фанат

oncle terrible
Команда форума
классика.
в одном месте надыбать готовую функцию, потом в другое место придти, чтобы исправили
Какой дурак придумал отладку? Кому нужны программисты? Впрочем, нет. программисты, как раз, нужны. Исправлять код халявщикам.

-~{}~ 23.02.07 14:14:

на будущее запомни.
пролема не бывает в версии пхп.
проблема бывает только в кривом коде.
и исправлять надо, соответственно, кривой код, а не мануалы "облазявать".
 

xInOrK

Новичок
Сорри если слишком длинный пост...

echo print_r(arrayColumnSort("count_newmessages", SORT_DESC, SORT_NUMERIC, "count_messages", SORT_DESC, SORT_NUMERIC, $array));

PHP 5.2.0-dev
Array
(
[0] => Array
(
[user_status] => offline
[count_messages] => 2
[count_newmessages] => 4
)
[1] => Array
(
[user_status] => offline
[count_messages] => 6
[count_newmessages] => 1
)
[2] => Array
(
[user_status] => offline
[count_messages] => 19
[count_newmessages] => 0
)
[3] => Array
(
[user_status] => offline
[count_messages] => 7
[count_newmessages] => 0
)
[4] => Array
(
[user_status] => offline
[count_messages] => 5
[count_newmessages] => 0
)
)

PHP 5.2.1

Array
(
[1] => Array
(
[user_status] => offline
[count_messages] => 5
[count_newmessages] => 0
)
[2] => Array
(
[user_status] => offline
[count_messages] => 6
[count_newmessages] => 1
)
[3] => Array
(
[user_status] => offline
[count_messages] => 2
[count_newmessages] => 4
)
[4] => Array
(
[user_status] => offline
[count_messages] => 7
[count_newmessages] => 0
)
[5] => Array
(
[user_status] => offline
[count_messages] => 19
[count_newmessages] => 0
)
)
 

serglt

Анус, ой, Ахтунг
Не разбираешься в чужом коде, не лезь туда и не используй. Используй стандартные функции PHP. Вот тебе пример и ссылка
PHP:
function c ($a, $b) {
    return $a ['count_messages'] > $b ['count_messages'];
}

usort ($array, 'c');
print_r ($array);
http://lt.php.net/manual/ru/function.usort.php

-~{}~ 23.02.07 17:12:

xInOrK
echo print_r(arrayColumnSort("count_newmessages", SORT_DESC, SORT_NUMERIC, "count_messages", SORT_DESC, SORT_NUMERIC, $array));

Красавчег, а зачем echo перед print_r? :)
лучше пчел разводи, мед собирай, но не программируй :)
 

xInOrK

Новичок
да просто забыл стереть раньше другое что просто выводил :Р незаметил :)
 

tf

крылья рулят
xInOrK, ты реально думаеш что тут будут разбиратся в твоем коде вместо тебя и скажут ответ?
 

xInOrK

Новичок
Надеюсь что найдуться те кто реально подскажет потому что я бы сюда даже ненаписал если бы сам не просидел бы над этим долго...

http://bugs.php.net/bug.php?id=39456&edit=1
 

tf

крылья рулят
http://bugs.php.net/bug.php?id=39456&edit=1
ясно, маленькое несоответствие в твоих словах
[10 Nov 2006 9:36am UTC] ricardo dot matters at mindbench dot nl небыло php 5.2.1 - нехорошо так обманывать людей да еще и exsample не приводить
 

xInOrK

Новичок
Ладно я всё понял... но перед тем как сюда написать я проверил на локалхосте и на сервере на разных версиях PHP иначе бы сюда и не писал...
 

Фанат

oncle terrible
Команда форума
мля.
да хоть на компьютере у господа бога проверяй.
"ниработаит" - ЭТО НЕ ОПИСАНИЕ ПРОБЛЕМЫ, А ДЕТСКИЙ ЛЕПЕТ.
 
Сверху