我想对带有分层键的表进行排序,但我无法:(下面是一个示例:
array ( '1.1.1' => 'test1', '10.1.1' => 'test2', '2.1.1' => 'test3', 1 => 'test4', 2 => 'test5', 3 => 'test6', '0.1' => 'test7', 0 => 'test8', 10 => 'test9', )
结果必须是:
array ( '0' => 'test8', '0.1' => 'test7', '1' => 'test4', '1.1.1' => 'test1', '2' => 'test5', '2.1.1' => 'test3', '3' => 'test6', '10' => 'test9', '10.1.1' => 'test2')
非常感谢 !
我的尝试 : https://notepad.pw/71vyf2f7
你看过uksort吗? http://php.net/manual/en/function.uksort.php
我认为这就是你需要的
$arr = array ( '1.1.1' => 'test1', '10.1.1' => 'test2', '2.1.1' => 'test3', 1 => 'test4', 2 => 'test5', 3 => 'test6', '0.1' => 'test7', 0 => 'test8', 10 => 'test9', );
function cmp($a,$b) {
return floatval($a) > floatval($b);
}
uksort($arr, 'cmp');
print_r($arr)
<?php
$in = [
'1.1.1' => 'test1',
'10.1.1' => 'test2',
'2.1.1' => 'test3',
1 => 'test4',
2 => 'test5',
3 => 'test6',
'0.1' => 'test7',
0 => 'test8',
10 => 'test9'
];
$desired =
[
'0' => 'test8',
'0.1' => 'test7',
'1' => 'test4',
'1.1.1' => 'test1',
'2' => 'test5',
'2.1.1' => 'test3',
'3' => 'test6',
'10' => 'test9',
'10.1.1' => 'test2'
];
ksort($in, SORT_NATURAL);
var_dump($in === $desired);
var_export($in);
输出:
bool(true)
array (
0 => 'test8',
'0.1' => 'test7',
1 => 'test4',
'1.1.1' => 'test1',
2 => 'test5',
'2.1.1' => 'test3',
3 => 'test6',
10 => 'test9',
'10.1.1' => 'test2',
)