Given an array of arrays, how would I natural sort the inner arrays based on their values?
Example array:
array (size=2)
0 =>
array (size=1)
'manager' => string 'Manager 1' (length=9)
1 =>
array (size=1)
'manager' => string 'Manager 3' (length=9)
Another example array:
array (size=2)
0 =>
array (size=1)
'month' => string 'June' (length=4)
1 =>
array (size=1)
'month' => string 'January' (length=7)
My first idea was to just natsort()
them, but that expects a normal array. The next idea was to use array_multisort($array, SORT_NATURAL);
, but that didn't work due to the associative arrays.
So, how could I sort the inner arrays in using natural sorting? Also, keeping array keys doesn't matter in this case.
EDIT:
Expected output of array 1 would be the same (since Manager 1 and Manager 3 are already in order):
array (size=2)
0 =>
array (size=1)
'manager' => string 'Manager 1' (length=9)
1 =>
array (size=1)
'manager' => string 'Manager 3' (length=9)
Expected output of array two would put January ahead of June (the 'natural' order):
// 0 and 1 keys can switch or stay the same, doesn't matter
array (size=2)
0 =>
array (size=1)
'month' => string 'January' (length=4)
1 =>
array (size=1)
'month' => string 'June' (length=7)
The arsort() function sorts an associative array in descending order, according to the value. Tip: Use the asort() function to sort an associative array in ascending order, according to the value. Tip: Use the krsort() function to sort an associative array in descending order, according to the key.
natsort(array &$array ): bool. This function implements a sort algorithm that orders alphanumeric strings in the way a human being would while maintaining key/value associations. This is described as a "natural ordering".
Sorting a multidimensional array by element containing date. Use the usort() function to sort the array. The usort() function is PHP builtin function that sorts a given array using user-defined comparison function. This function assigns new integral keys starting from zero to array elements.
Associative arrays are used to store key value pairs. For example, to store the marks of different subject of a student in an array, a numerically indexed array would not be the best choice.
Well!, You can simplify the function using natural sort functions like this:
usort($array, function($a, $b){
return strnatcmp($a['manager'],$b['manager']); //Case sensitive
//return strnatcasecmp($a['manager'],$b['manager']); //Case insensitive
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With