Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-对数组的键进行排序,这些键是不同的字符串,但末尾包含数字_Php_Arrays_String_Sorting_Numerical - Fatal编程技术网

PHP-对数组的键进行排序,这些键是不同的字符串,但末尾包含数字

PHP-对数组的键进行排序,这些键是不同的字符串,但末尾包含数字,php,arrays,string,sorting,numerical,Php,Arrays,String,Sorting,Numerical,我的数组中有以下键: Array ( "Danger - 69" => Array(); "Fab - 67" => Array(); "Cat - 68" => Array(); ) 我希望它按字符串中的数字排序,而不是按字符串本身的第一个字母排序,如下所示: Array ( "Fab - 67" => Array(); "Cat - 68" => Array(); "Danger -

我的数组中有以下键:

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);