phparrayssortingnatural-sortksort

Naturally sort an array by alphanumeric key


How can I sort a array like this by its keys, from the smaller resolution to the larger one:

$sizes = array(
   '120x120' => 'large',
   '60x60' => 'small',
   '200x200' => 'very large',
   '90x90' => 'medium',
...

?

should be:


Solution

  • ksort() in numeric mode should work just fine :

    $sizes = array(
       '120x120' => 'large',
       '60x60' => 'small',
       '200x200' => 'very large',
       '90x90' => 'medium',
    );
    
    ksort($sizes, SORT_NUMERIC);
    var_dump($sizes);
    

    will get you :

    array
      '60x60' => string 'small' (length=5)
      '90x90' => string 'medium' (length=6)
      '120x120' => string 'large' (length=5)
      '200x200' => string 'very large' (length=10)
    

    This will work because the size is a numeric -- and is found before the `'x'` *(not sure what will be done with the `'x'` and what follows -- but, anyway, that part of the keys is useless, as it's purely redondant information)*