我想按照PHP代碼升序排列varchar數組數組。
我曾嘗試這樣做,我得到的結果是:PHP按升序排序Varchar數組數組
ABC1
ABC10
ABC11
ABC11A
ABC11B
ABC2
ABC2A
ABC20
ABC3
但我想:
ABC1
ABC2
ABC2A
ABC3
ABC10
ABC11
ABC11A
ABC11B
ABC20
有什麼辦法來實現這一目標?
我想按照PHP代碼升序排列varchar數組數組。
我曾嘗試這樣做,我得到的結果是: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"
}
UPDATE由於意見討論
$keys = array_keys($myarray);
natsort($keys);
$newarray = array();
foreach ($keys as $k) $newarray[] = $myarray[$k];
問題中所述,在我的情況下,natsort()不工作,因爲我有多維數組: 'array( \t 'BFIMO1'=>數組( \t \t '設備'=>數組( \t \t \t 'equipID'=> 'BFIMO1', \t \t \t 'NAME'=> '3000A主要Breaker- 277/480V主', \t \t \t'location'=>'Basement-SwGear Room', \t \t \t '意見'=> '3000A主要Breaker- 277/480V主', \t \t \t 'PPE'=>空 \t \t) \t) \t 'BFIMO10'=>數組( \t \t「設備'=>數組( \t \t \t 'equipID'=> 'BFIMO10', \t \t \t 'NAME'=> '冷卻器泵', \t \t \t '位置'=>' Basement- SwGear房」, \t \t \t '意見'=> '冷卻側泵', \t \t \t 'PPE'=>空 \t \t) \t),' 我得到數組字符串轉換錯誤 – dheeraj
你想將這個鍵「BFIMO1」排序? – splash58
是的,我有鑰匙'BFIMO1 BFIMO10 BFIMO2'等等。我想按順序排列這些。 – dheeraj
閱讀[文件](http://php.net/sort),並密切關注排序標誌,或看看[natsort()](http://php.net/manual/en/function.natsort.php)。 –
您是否嘗試僅基於字母進行排序並忽略字符串中的數字值? – shunya
感謝您的快速指導。 – dheeraj