php:数组按字符串键排序

Ale*_*lex 6 php arrays sorting

我如何通过其键对这样的数组进行排序,从较小的分辨率到较大的分辨率:

$sizes = array(
   '120x120' => 'large',
   '60x60' => 'small',
   '200x200' => 'very large',
   '90x90' => 'medium',
...
Run Code Online (Sandbox Code Playgroud)

应该 :

  • 60X60
  • 90x90
  • 120×120
  • 200x200的
  • ...

Pas*_*TIN 9

ksort() 在数字模式下应该工作得很好:

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

ksort($sizes, SORT_NUMERIC);
var_dump($sizes);
Run Code Online (Sandbox Code Playgroud)

会得到你:

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


这将起作用,因为大小是一个数字 - 并且在之前找到'x' (不确定将对'x'接下来的内容做什么 - 但是,无论如何,这部分键是无用的,因为它是纯粹的重新信息)


Hai*_*vgi 9

你需要按键自然排序,可以使用uksort

uksort($array, 'strnatcasecmp');
Run Code Online (Sandbox Code Playgroud)