I am struggling with alphanumeric array sorting, I have below array and I the result identical to the result of JavaScript sorting function localecompare()
below is my code:
<?php
$arr = array(
array( 'label' => '#C' ),
array( 'label' => '!A' ),
array( 'label' => '@B' ),
array( 'label' => 'g' ),
array( 'label' => '98' ),
array( 'label' => 'G' )
);
usort($arr, function($a, $b) {
return strnatcasecmp($a['label'], $b['label']);
});
print_r($arr);
Output:
Array (
[0] => Array ( [label] => !A )
[1] => Array ( [label] => #C )
[2] => Array ( [label] => 98 )
[3] => Array ( [label] => @B )
[4] => Array ( [label] => g )
[5] => Array ( [label] => G )
)
But I am trying to achieve the result as below which is equivalent to the result of JavaScript sorting function localecompare()
Expected:
Array
(
[0] => Array ( [label] => !A )
[1] => Array ( [label] => @B )
[2] => Array ( [label] => #C )
[3] => Array ( [label] => 98 )
[4] => Array ( [label] => g )
[5] => Array ( [label] => G )
)