結論
usortの比較結果が等しくなる時(callbackが0を返す時)は配列の順番は変わらないと思っていたがPHP5ではそれが変わってしまう。
※公式ではPHP8.0.0より前のバージョンで起こるとのこと。
試したこと
検証コード
$vals = ['first', 'second', 'third'];
usort($vals, function($a, $b) {
return 0;
});
print_r($vals);
期待した出力
Array
(
[0] => first
[1] => second
[2] => third
)
実際の出力
Array
(
[0] => third
[1] => second
[2] => first
)
PHPのどのバージョンから並び順が変わるかを確認した
3V4Lを使って各バージョンの挙動を確認した。
php5では並び順が変わってしまうらしい。