Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php uasort / 9 сообщений из 9, страница 1 из 1
31.08.2012, 22:07:13
    #37939487
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php uasort
Столкнулся, с интересным поведением функции uasort:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
$arr = array(
       'key1' => array(1),
       'key2' => array(1),
       'key3' => array(1),
       'key4' => array(1),
       'key5' => array(6)
);

uasort($arr, function ($a, $b)
{
      if ($a == $b) {
                return 0;
      }
      return ($a < $b) ? -1 : 1;
});



Вывод:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Array
(
    [key4] => Array
        (
            [0] => 1
        )

    [key1] => Array
        (
            [0] => 1
        )

    [key3] => Array
        (
            [0] => 1
        )

    [key2] => Array
        (
            [0] => 1
        )

    [key5] => Array
        (
            [0] => 6
        )
)



Подскажите, пожалуйста, почему в итоговом массиве ключи перестроились? хотя ведь должны оставаться на тех же позициях.
...
Рейтинг: 0 / 0
31.08.2012, 22:08:05
    #37939488
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php uasort
Ошибся, функция:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
 
uasort($arr, function ($a, $b)
{
            if ($a[0] == $b[0]) {
                return 0;
            }
            return ($a[0] < $b[0]) ? -1 : 1;
 });
...
Рейтинг: 0 / 0
31.08.2012, 23:25:30
    #37939537
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php uasort
capscom, вопрос в силе
...
Рейтинг: 0 / 0
01.09.2012, 15:59:29
    #37939908
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php uasort
чего должны?
Код: php
1.
2.
3.
4.
'key1' => array(1),
       'key2' => array(1),
       'key3' => array(1),
       'key4' => array(1),


как ты отличил array(1) от array(1)???
...
Рейтинг: 0 / 0
01.09.2012, 16:01:17
    #37939910
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php uasort
http://php.net/manual/en/language.operators.comparison.php
авторarray array Array with fewer members is smaller, if key from operand 1 is not found in operand 2 then arrays are uncomparable, otherwise - compare value by value (see following example)
продебаж свою функцию сравнения, да.
...
Рейтинг: 0 / 0
01.09.2012, 16:27:37
    #37939921
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php uasort
ScareCrowчего должны?
Код: php
1.
2.
3.
4.
'key1' => array(1),
       'key2' => array(1),
       'key3' => array(1),
       'key4' => array(1),


как ты отличил array(1) от array(1)???

Так в том то и дело, что массив отсортирован. И получается что после того как пропустить через uasort, отсортированный массив, у него ключи, по непонятной причине, меняются местами.


Собственно, вопрос не баг ли это? Или же что-то не понимаю.
...
Рейтинг: 0 / 0
01.09.2012, 16:29:22
    #37939922
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php uasort
в моем понимании, массив должен остаться без изменений или ошибаюсь?
...
Рейтинг: 0 / 0
01.09.2012, 16:36:33
    #37939923
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php uasort
capscomв моем понимании, массив должен остаться без изменений или ошибаюсь?
тынц читаем про cmp_function
...
Рейтинг: 0 / 0
01.09.2012, 17:01:02
    #37939937
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php uasort
Програмёр,

авторФункция cmp_function не сохраняет исходный порядок одинаковых элементов

Ясно, спасибо большое. Придется тогда писать свое решение, ибо мне порядок важен.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php uasort / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]