我有以下数组:
array (
0 => '4-0',
1 => '4-1',
2 => '4-2',
3 => '4-3',
4 => '4-4',
5 => '4-5',
6 => '4-6',
7 => '4-7',
8 => '4-8',
9 => '4-9',
10 => '4-10',
11 => '4-11',
12 => '4-12',
13 => '4-13',
14 => '4-14',
15 => '4-15',
16 => '4-16',
17 => '8-0',
18 => '9-0',
19 => '2-0',
20 => '5-0',
21 => '7-1',
)
我想要的是由value
订购value
。因此,array19的值应该是第一个值,array18值应该是最后一个值。我尝试过一些排序函数,比如asort()
,但是它并没有做我想做的事情。
asort()
:
array (
0 => '2-0',
1 => '4-0',
2 => '4-1',
3 => '4-10',
4 => '4-11',
5 => '4-12',
6 => '4-13',
7 => '4-14',
8 => '4-15',
9 => '4-16',
10 => '4-2',
11 => '4-3',
12 => '4-4',
13 => '4-5',
14 => '4-6',
15 => '4-7',
16 => '4-8',
17 => '4-9',
18 => '5-0',
19 => '7-1',
20 => '8-0',
21 => '9-0',
)
对此是否有特定的PHP函数,或者我是否应该实现自己的算法?有什么想法吗?
发布于 2018-05-08 13:46:35
可以将sort()
与SORT_NATURAL
标志一起使用:
<?php
$array = array (
0 => '4-0',
1 => '4-1',
2 => '4-2',
3 => '4-3',
4 => '4-4',
5 => '4-5',
6 => '4-6',
7 => '4-7',
8 => '4-8',
9 => '4-9',
10 => '4-10',
11 => '4-11',
12 => '4-12',
13 => '4-13',
14 => '4-14',
15 => '4-15',
16 => '4-16',
17 => '8-0',
18 => '9-0',
19 => '2-0',
20 => '5-0',
21 => '7-1',
);
sort( $array, SORT_NATURAL );
print_r( $array );
输出:
Array
(
[0] => 2-0
[1] => 4-0
[2] => 4-1
[3] => 4-2
[4] => 4-3
[5] => 4-4
[6] => 4-5
[7] => 4-6
[8] => 4-7
[9] => 4-8
[10] => 4-9
[11] => 4-10
[12] => 4-11
[13] => 4-12
[14] => 4-13
[15] => 4-14
[16] => 4-15
[17] => 4-16
[18] => 5-0
[19] => 7-1
[20] => 8-0
[21] => 9-0
)
发布于 2018-05-08 17:07:41
您可以使用natsort
http://php.net/manual/en/function.natsort.php。它将数组内容排序为字符串。
natsort($your_array)
发布于 2018-05-08 13:54:13
它的简单,只是排序功能将完成这项工作。
sort($array);
请注意,参数是按引用传递的,而不是按值传递的。
<?php
$array=array (
0 => '4-0',
1 => '4-1',
2 => '4-2',
....
....
);
sort($array);
print_r($array);
?>
会给出同样的答案
https://stackoverflow.com/questions/50235074
复制相似问题