PHP 按升序对 Varchar 数据数组进行排序
PHP Sort Varchar Data Array In Ascending Order
我想通过 PHP 代码对 varchar 数据数组进行升序排序。
我试过这样做,得到的结果是:
ABC1
ABC10
ABC11
ABC11A
ABC11B
ABC2
ABC2A
ABC20
ABC3
但我想要:
ABC1
ABC2
ABC2A
ABC3
ABC10
ABC11
ABC11A
ABC11B
ABC20
有什么办法可以实现吗?
$myarray= array("ABC1","ABC10","ABC11","ABC11A","ABC11B","ABC2","ABC2A","ABC20","ABC3");
natsort($myarray);
var_dump($myarray);
结果
array(9) {
[0]=>
string(4) "ABC1"
[5]=>
string(4) "ABC2"
[6]=>
string(5) "ABC2A"
[8]=>
string(4) "ABC3"
[1]=>
string(5) "ABC10"
[2]=>
string(5) "ABC11"
[3]=>
string(6) "ABC11A"
[4]=>
string(6) "ABC11B"
[7]=>
string(5) "ABC20"
}
更新 由于评论中的讨论
$keys = array_keys($myarray);
natsort($keys);
$newarray = array();
foreach ($keys as $k) $newarray[] = $myarray[$k];
我想通过 PHP 代码对 varchar 数据数组进行升序排序。
我试过这样做,得到的结果是:
ABC1
ABC10
ABC11
ABC11A
ABC11B
ABC2
ABC2A
ABC20
ABC3
但我想要:
ABC1
ABC2
ABC2A
ABC3
ABC10
ABC11
ABC11A
ABC11B
ABC20
有什么办法可以实现吗?
$myarray= array("ABC1","ABC10","ABC11","ABC11A","ABC11B","ABC2","ABC2A","ABC20","ABC3");
natsort($myarray);
var_dump($myarray);
结果
array(9) {
[0]=>
string(4) "ABC1"
[5]=>
string(4) "ABC2"
[6]=>
string(5) "ABC2A"
[8]=>
string(4) "ABC3"
[1]=>
string(5) "ABC10"
[2]=>
string(5) "ABC11"
[3]=>
string(6) "ABC11A"
[4]=>
string(6) "ABC11B"
[7]=>
string(5) "ABC20"
}
更新 由于评论中的讨论
$keys = array_keys($myarray);
natsort($keys);
$newarray = array();
foreach ($keys as $k) $newarray[] = $myarray[$k];