PHP -排序数组的键是不同的字符串,但在末尾包含数字


PHP - Sort keys of an array that are different strings but contain numbers at the end

我的数组中有以下键:

Array (  
    "Danger - 69" => Array();  
    "Fab - 67" => Array();  
    "Cat - 68" => Array();  
)

我希望它按照字符串中的数字排序,而不是字符串本身的第一个字母,像这样:

Array (  
    "Fab - 67" => Array();  
    "Cat - 68" => Array();  
    "Danger - 69" => Array();  
)  

你可以这样做:

<?php
$data = array (
"Danger - 69" => Array(),
"Fab - 67" => Array(),
"Cat - 68" => Array(),
);

uksort($data, function($a, $b) {
   $pos = strrpos($a, '-');
   if ($pos !== false) {
      $a = (int) trim(substr($a,$pos+1));
   }
   $pos = strrpos($b, '-');
   if ($pos !== false) {
      $b = (int) trim(substr($b,$pos+1));
   }
   return $a - $b;
}); 
var_dump($data);