Skip to content

Instantly share code, notes, and snippets.

@ziadoz
Created June 6, 2023 12:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ziadoz/4236f7d534ca186767f8b0c825bc438c to your computer and use it in GitHub Desktop.
Save ziadoz/4236f7d534ca186767f8b0c825bc438c to your computer and use it in GitHub Desktop.
PHP Sort Associative Array
<?php
final class SortAssoc
{
public function __construct(private readonly array $array, private readonly array $columns = [])
{
}
public function __invoke(): array
{
$array = $this->array;
usort($array, function (array $a, array $b) {
$left = [];
$right = [];
foreach ($this->columns as $column) {
$left[] = $a[$column] ?? throw new \OutOfBoundsException(sprintf('Invalid filter key: %s', $column));
$right[] = $b[$column] ?? throw new \OutOfBoundsException(sprintf('Invalid filter key: %s', $column));
}
return [$left] <=> [$right];
});
return $array;
}
}
$array = [
['name' => 'Joe Bloggs', 'age' => 42],
['name' => 'Jane Bloggs', 'age' => 24],
];
$sorted = (new SortAssoc($array, ['name', 'age']))->__invoke();
print_r($sorted);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment