如何根据元素中的数值对数组按数字顺序排序:其中元素是String?
例如。来自:
Array(
0 => One:3
1 => Two:1
2 => Three:4
3 => Four:2
)
:
Array(
0 => Two:1
1 => Four:2
2 => One:3
3 => Three:4
)
给定输入数组:
$arr = array('One:3','Two:1','Three:4','Four:2');
usort($arr, function($a, $b) {
return filter_var($a, FILTER_SANITIZE_NUMBER_INT) - filter_var($b, FILTER_SANITIZE_NUMBER_INT);
});
print_r($arr);
输出:
Array
(
[0] => Two:1
[1] => Four:2
[2] => One:3
[3] => Three:4
)
如果您的字符串遵循此模式,则可以使用wassort()函数并构建一个对其进行排序的函数。例子:
$elements = array('One:3','Two:1','Three:4','Four:2');
uasort($elements, function($a, $b){
$a = array_pop(explode(':', $a));
$b = array_pop(explode(':', $b));
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
});
print_r($elements); // Array ( [1] => Two:1 [3] => Four:2 [0] => One:3 [2] => Three:4 )