By default, PHP natsort() function does not work with multidimensional arrays.
/**
* @param array $array
* @param string $sortByKey
* @return array
*/
public function natsort(array $array, string $sortByKey): array
{
if (empty($array)) {
return $array;
}
$namedArray = [];
$naturalSortKeys = [];
foreach ($array as $item) {
$naturalSortKeys[] = (string)$item[$sortByKey];
$namedArray[(string)$item[$sortByKey]] = $item;
}
natsort($naturalSortKeys);
$naturalSortArray = [];
$sortOrder = 0;
foreach ($naturalSortKeys as $key) {
$naturalSortArray[$sortOrder++] = $namedArray[(string)$key];
}
return $naturalSortArray;
}