<?php
$array = [
['id' => 1, 'sort_code' => 4],
['id' => 2, 'sort_code' => 2],
['id' => 3],
['id' => 4, 'sort_code' => 8],
['id' => 5],
['id' => 6, 'sort_code' => 6]
];
uasort($array, function($a, $b) {
echo "\n" . json_encode($a) . " -vs- " . json_encode($b) . " eval: ";
echo $eval = (int)(isset($a['sort_code'], $b['sort_code']) && $a['sort_code'] > $b['sort_code']);
return $eval;
});
echo "\n---\n";
var_export($array);
echo "\n======\n";
uasort($array, function($a, $b) {
echo "\n" . json_encode($a) . " -vs- " . json_encode($b) . " eval: ";
echo $eval = ($a['sort_code'] ?? 0) <=> ($b['sort_code'] ?? 0);
return $eval;
});
echo "\n---\n";
var_export($array);
- Output for 7.2.21, 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- {"id":1,"sort_code":4} -vs- {"id":2,"sort_code":2} eval: 1
{"id":1,"sort_code":4} -vs- {"id":3} eval: 0
{"id":3} -vs- {"id":4,"sort_code":8} eval: 0
{"id":4,"sort_code":8} -vs- {"id":5} eval: 0
{"id":5} -vs- {"id":6,"sort_code":6} eval: 0
---
array (
1 =>
array (
'id' => 2,
'sort_code' => 2,
),
0 =>
array (
'id' => 1,
'sort_code' => 4,
),
2 =>
array (
'id' => 3,
),
3 =>
array (
'id' => 4,
'sort_code' => 8,
),
4 =>
array (
'id' => 5,
),
5 =>
array (
'id' => 6,
'sort_code' => 6,
),
)
======
{"id":2,"sort_code":2} -vs- {"id":1,"sort_code":4} eval: -1
{"id":1,"sort_code":4} -vs- {"id":3} eval: 1
{"id":2,"sort_code":2} -vs- {"id":3} eval: 1
{"id":1,"sort_code":4} -vs- {"id":4,"sort_code":8} eval: -1
{"id":4,"sort_code":8} -vs- {"id":5} eval: 1
{"id":1,"sort_code":4} -vs- {"id":5} eval: 1
{"id":2,"sort_code":2} -vs- {"id":5} eval: 1
{"id":3} -vs- {"id":5} eval: 0
{"id":4,"sort_code":8} -vs- {"id":6,"sort_code":6} eval: 1
{"id":1,"sort_code":4} -vs- {"id":6,"sort_code":6} eval: -1
---
array (
2 =>
array (
'id' => 3,
),
4 =>
array (
'id' => 5,
),
1 =>
array (
'id' => 2,
'sort_code' => 2,
),
0 =>
array (
'id' => 1,
'sort_code' => 4,
),
5 =>
array (
'id' => 6,
'sort_code' => 6,
),
3 =>
array (
'id' => 4,
'sort_code' => 8,
),
)
preferences:
130.66 ms | 411 KiB | 5 Q