我要对数组进行数值排序,代码如下:
1 2 3 4 | <code> $a = array ( 'a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
asort( $a , SORT_NUMERIC);
var_dump( $a );
</code>
|
ログイン後にコピー
ログイン後にコピー
打印结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <code> array (5) {
'd' =>
int(10)
'a' =>
int(10)
'c' =>
int(10)
'z' =>
int(10)
'b' =>
int(11)
}
</code>
|
ログイン後にコピー
ログイン後にコピー
问题:
- 我需要对数值进行排序(已实现)
- 若数值相同,则数组键的顺序位置不改变,请问如何做到
举例:
上面的数组
1 2 | <code> $a = array ( 'a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
</code>
|
ログイン後にコピー
ログイン後にコピー
根据上面排序后,键的顺序依次为
d => 10, a => 10, c => 10, z => 10, b => 11
我希望能实现的顺序为为
a => 10, z => 10, c => 10, d => 10, b => 11
回复内容:
我要对数组进行数值排序,代码如下:
1 2 3 4 | <code> $a = array ( 'a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
asort( $a , SORT_NUMERIC);
var_dump( $a );
</code>
|
ログイン後にコピー
ログイン後にコピー
打印结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <code> array (5) {
'd' =>
int(10)
'a' =>
int(10)
'c' =>
int(10)
'z' =>
int(10)
'b' =>
int(11)
}
</code>
|
ログイン後にコピー
ログイン後にコピー
问题:
- 我需要对数值进行排序(已实现)
- 若数值相同,则数组键的顺序位置不改变,请问如何做到
举例:
上面的数组
1 2 | <code> $a = array ( 'a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
</code>
|
ログイン後にコピー
ログイン後にコピー
根据上面排序后,键的顺序依次为
d => 10, a => 10, c => 10, z => 10, b => 11
我希望能实现的顺序为为
a => 10, z => 10, c => 10, d => 10, b => 11
http://3v4l.org/fsQkS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <code> 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 );
</code>
|
ログイン後にコピー