Php 使用uksort()对数组进行排序
我有一个这样的数组:Php 使用uksort()对数组进行排序,php,arrays,sorting,Php,Arrays,Sorting,我有一个这样的数组: $a = array("MA1" => 0, "MA10" => 1, "MA20" => 2, "MA5" => 3, "SM10" => 4, "SM8" => 5, "SM20" => 6, "SN33" => 7); 我想对其进行排序,我将按照以下顺序进行排序: $a = array("MA1" => 0, "MA5" => 3, "MA10" => 1, "MA20" => 2, "SM8"
$a = array("MA1" => 0, "MA10" => 1, "MA20" => 2, "MA5" => 3, "SM10" => 4, "SM8" => 5, "SM20" => 6, "SN33" => 7);
我想对其进行排序,我将按照以下顺序进行排序:
$a = array("MA1" => 0, "MA5" => 3, "MA10" => 1, "MA20" => 2, "SM8" => 5, "SM10" => 4, "SM20" => 6, "SN33" => 7);
所以我需要一个顺序,在前两个字符内按字母顺序,其余字符按数字顺序。所以我想我必须和你一起做这件事
uksort($a, "cmp");
所以我需要这样一个函数:
function cmp($a, $b) {
// ???
return strcasecmp($a, $b);
}
我需要如何编写函数才能使顺序正确
提前向您表示感谢和问候。您可以使用内置的自然比较功能:
$a = array("MA1" => 0, "MA10" => 1, "MA20" => 2, "MA5" => 3, "SM10" => 4, "SM8" => 5, "SM20" => 6, "SN33" => 7);
uksort($a, "strnatcasecmp");
print_r($a);
上述代码将产生以下输出:
Array
(
[MA1] => 0
[MA5] => 3
[MA10] => 1
[MA20] => 2
[SM8] => 5
[SM10] => 4
[SM20] => 6
[SN33] => 7
)
您可以使用内置的自然比较功能:
$a = array("MA1" => 0, "MA10" => 1, "MA20" => 2, "MA5" => 3, "SM10" => 4, "SM8" => 5, "SM20" => 6, "SN33" => 7);
uksort($a, "strnatcasecmp");
print_r($a);
上述代码将产生以下输出:
Array
(
[MA1] => 0
[MA5] => 3
[MA10] => 1
[MA20] => 2
[SM8] => 5
[SM10] => 4
[SM20] => 6
[SN33] => 7
)