Почему usort() не обеспечивает стабильную сортировку для одинаково сравниваемых значений в PHP8?Php

Кемеровские программисты php общаются здесь
Anonymous
Почему usort() не обеспечивает стабильную сортировку для одинаково сравниваемых значений в PHP8?

Сообщение Anonymous »

Я использую usort для сортировки массива с ассоциативным массивом внутри каждого элемента.

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

Например:

Код: Выделить всё

array(
array('name' => 'Ben', 'authn_weight' => 85.3),
array('name' => 'Josh', 'authn_weight' => 85.3),
array('name' => 'Fred', 'authn_weight' => 85.3)
);
Можно изменить на следующее:

Код: Выделить всё

array(
array('name' => 'Josh', 'authn_weight' => 85.3),
array('name' => 'Ben', 'authn_weight' => 85.3),
array('name' => 'Fred', 'authn_weight' => 85.3)
);
Это функция сортировки:

Код: Выделить всё

private function weightSortImplementation($a, $b){
$aWeight = $a['autn_weight'];
$bWeight = $b['autn_weight'];

if ($aWeight == $bWeight) {
return 0;
}
return ($aWeight < $bWeight) ? 1 : -1;
}
Я проверил, что функция WeightSortImplementation всегда возвращает 0, показывая, что они одинаковы. Так почему же это все еще меняет порядок массива?

Вернуться в «Php»