我要對數組進行數值排序,代碼如下:
$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);asort($a, SORT_NUMERIC);var_dump($a);
列印結果如下:
array(5) { 'd' => int(10) 'a' => int(10) 'c' => int(10) 'z' => int(10) 'b' => int(11)}
問題:
- 我需要對數值進行排序(已實現)
- 若數值相同,則數組鍵的順序位置不改變,請問如何做到
舉例:
上面的數組
$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
根據上面排序後,鍵的順序依次為
d => 10, a => 10, c => 10, z => 10, b => 11
我希望能實現的順序為為
a => 10, z => 10, c => 10, d => 10, b => 11
回複內容:
我要對數組進行數值排序,代碼如下:
$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);asort($a, SORT_NUMERIC);var_dump($a);
列印結果如下:
array(5) { 'd' => int(10) 'a' => int(10) 'c' => int(10) 'z' => int(10) 'b' => int(11)}
問題:
- 我需要對數值進行排序(已實現)
- 若數值相同,則數組鍵的順序位置不改變,請問如何做到
舉例:
上面的數組
$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
根據上面排序後,鍵的順序依次為
d => 10, a => 10, c => 10, z => 10, b => 11
我希望能實現的順序為為
a => 10, z => 10, c => 10, d => 10, b => 11
http://3v4l.org/fsQkS
function hasort($arr) { $a = $b = array(); foreach($arr as $v => $k) $a[$k][] = $v; ksort($a); foreach($a as $v => $i) foreach($i as $k) $b[$k] = $v; return $b;}$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);$a = hasort($a);print_r($a);/**Array( [a] => 10 [z] => 10 [c] => 10 [d] => 10 [b] => 11)**/