<?php
$payload = [
['other_value_y' => 'y', 'reference' => '423-52', 'other_value_x' => 'x'],
['other_value_y' => 'y', 'reference' => '223-52', 'other_value_x' => 'x'],
['other_value_y' => 'y', 'reference' => '5423-52', 'other_value_x' => 'x'],
['other_value_y' => 'y', 'reference' => '823-52', 'other_value_x' => 'x'],
['other_value_y' => 'y', 'reference' => '123-52', 'other_value_x' => 'x'],
];
usort($payload, static function (array $a, array $b) {
if (!isset($a['reference']) || !isset($b['reference'])) {
throw new \RuntimeException('Missing array key "reference"', 1671615426);
}
// "Remove all characters except digits, plus and minus sign."
// (consequence `-123-45-67` is treated as (negative) `-1234567`)
// sse https://www.php.net/manual/en/filter.filters.sanitize.php
return filter_var($a['reference'], FILTER_SANITIZE_NUMBER_INT)
<=> filter_var($b['reference'], FILTER_SANITIZE_NUMBER_INT);
});
print_r($payload);
- Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
- Array
(
[0] => Array
(
[other_value_y] => y
[reference] => 123-52
[other_value_x] => x
)
[1] => Array
(
[other_value_y] => y
[reference] => 223-52
[other_value_x] => x
)
[2] => Array
(
[other_value_y] => y
[reference] => 423-52
[other_value_x] => x
)
[3] => Array
(
[other_value_y] => y
[reference] => 5423-52
[other_value_x] => x
)
[4] => Array
(
[other_value_y] => y
[reference] => 823-52
[other_value_x] => x
)
)
preferences:
88.8 ms | 408 KiB | 5 Q