powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php uasort
9 сообщений из 9, страница 1 из 1
php uasort
    #37939487
capscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся, с интересным поведением функции 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
php uasort
    #37939488
capscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибся, функция:

Код: 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
php uasort
    #37939537
capscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
capscom, вопрос в силе
...
Рейтинг: 0 / 0
php uasort
    #37939908
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чего должны?
Код: php
1.
2.
3.
4.
'key1' => array(1),
       'key2' => array(1),
       'key3' => array(1),
       'key4' => array(1),


как ты отличил array(1) от array(1)???
...
Рейтинг: 0 / 0
php uasort
    #37939910
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
php uasort
    #37939921
capscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
php uasort
    #37939922
capscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в моем понимании, массив должен остаться без изменений или ошибаюсь?
...
Рейтинг: 0 / 0
php uasort
    #37939923
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
capscomв моем понимании, массив должен остаться без изменений или ошибаюсь?
тынц читаем про cmp_function
...
Рейтинг: 0 / 0
php uasort
    #37939937
capscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмёр,

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

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


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