The sorting process is known as “natural ordering” or “multidimensional array natural sorting.”
Sorting arrays with more than one dimension can be challenging for beginners. PHP can compare two text strings or two numbers. Still, in a multidimensional array, each element is an array.
PHP does not know how to compare two arrays, especially if you wish to sort the array in a human-readable format while simultaneously maintaining the key/value pairs. You can sort the multidimensional array with the “natural order” algorithm.
$data = [
[
'id' => 1794,
'size' => 1,
'color' => 'Red',
],
[
'id' => 1826,
'size' => '2XL',
'color' => 'Red',
],
[
'id' => 1827,
'size' => 3,
'color' => '',
],
[
'id' => 1825,
'size' => 30,
'color' => 'Black'
],
[
'id' => 1828,
'size' => '3XL',
'color' => 'Blue'
],
[
'id' => 1829,
'size' => 'Medium',
'color' => 'Blue'
],
[
'id' => 1795,
'size' => 'XS',
'color' => 'Red'
]
];
usort($data, function($a, $b) {
return strnatcasecmp($a['size'], $b['size']);
});
//Print output
echo "<pre>";
print_r($aa);
strnatcasecmp() function used in the above code compares two strings using a “natural” algorithm. It returns the result based on input arguments, where the first argument specifies the first string to compare, and the second argument specifies the second string to compare.
Array
(
[0] => Array
(
[id] => 1794
[size] => 1
[color] => Red
)
[1] => Array
(
[id] => 1826
[size] => 2XL
[color] => Red
)
[2] => Array
(
[id] => 1827
[size] => 3
[color] =>
)
[3] => Array
(
[id] => 1828
[size] => 3XL
[color] => Blue
)
[4] => Array
(
[id] => 1825
[size] => 30
[color] => Black
)
[5] => Array
(
[id] => 1829
[size] => Medium
[color] => Blue
)
[6] => Array
(
[id] => 1795
[size] => XS
[color] => Red
)
)
Leave a Reply