Переопределение чисел для изменения порядка сортировки вызывает, казалось бы, случайную сортировку

Я пытался упорядочить массив игровых персонажей (в игре) по типу класса. Класс каждого игрока представлен числом. Я бы предпочел, чтобы классы были расположены в алфавитном порядке, а не численно, в зависимости от того, как мои данные определяют каждый класс.

Мой код такой:

$AlphabeticalClass = array(
1 => 11,
2 => 6,
3 => 3,
4 => 8,
5 => 7,
6 => 1,
7 => 9,
8 => 4,
9 => 10,
10 => 5,
11 => 2,
);

function CharacterSort($Char1, $Char2)
{
$c1 = $Char1['character']['class'];
$c2 = $Char2['character']['class'];

//$c1 = $AlphabeticalClass[$c1];
//$c2 = $AlphabeticalClass[$c2];

return strcmp($c1, $c2);
}

Когда комментарии там, сортировка происходит идеально (хотя упорядочивать классы способом, который я не хочу):

Сортировка рабочая

Когда комментарии удаляются так, чтобы значения классов были переназначены в алфавитном порядке:

Сортировка не работает

Как вы можете видеть выше, сортировка классов была выброшена из окна. Есть какие-нибудь идеи относительно того, что вызывает это?

usort применяется к массиву, который организует данные следующим образом:

Массив данных

0

Решение

Если класс числовой, вы можете использовать - вместо strcmp():

function CharacterSort($Char1, $Char2) {
$c1 = $Char1['character']['class'];
$c2 = $Char2['character']['class'];

return $c1 -$c2;
}

демонстрация

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]