对一个数组进行排序,例如
$arr=array(
'Acer TravelMate 220',
'Acer TravelMate 2200',
'Acer TravelMate 222',
'Acer TravelMate 223',
'Acer TravelMate 225',
'Acer TravelMate 230',
'Acer TravelMate 2300',
'Acer TravelMate 2301'
'Acer Aspire 1810 Timeline',
'Acer Aspire 18100 Timeline',
'Acer Aspire 1810T Timeline',
'Acer Aspire 1810TZ Timeline',
'Acer Aspire 1820P Timeline',
'Acer Aspire 18200P Timeline'
'Acer Aspire 1821P Timeline',
'Acer Aspire 1830T TimelineX',
'Acer Aspire 3410T Timeline',
'Acer Aspire 3810T Timeline');对这个数组进行排序, "这还不容易",某些同志先不要激动,听我慢慢说;
要求排序的结果是按类别排序,比如 1810的是一个类别,同一个类别再按照数字大小排序,那么1810所排的结果如下:
...
'Acer Aspire 1810 Timeline',
'Acer Aspire 1810T Timeline',
'Acer Aspire 1810TZ Timeline',//这里注意,同一大小数字按照数字后面的字母类别排序,同时数字后面的字母由少到多排序
'Acer Aspire 18100 Timeline',
...
以此类推,就是按照同类别的大小长短排序!
有劳各位了!
$arr=array(
'Acer TravelMate 220',
'Acer TravelMate 2200',
'Acer TravelMate 222',
'Acer TravelMate 223',
'Acer TravelMate 225',
'Acer TravelMate 230',
'Acer TravelMate 2300',
'Acer TravelMate 2301'
'Acer Aspire 1810 Timeline',
'Acer Aspire 18100 Timeline',
'Acer Aspire 1810T Timeline',
'Acer Aspire 1810TZ Timeline',
'Acer Aspire 1820P Timeline',
'Acer Aspire 18200P Timeline'
'Acer Aspire 1821P Timeline',
'Acer Aspire 1830T TimelineX',
'Acer Aspire 3410T Timeline',
'Acer Aspire 3810T Timeline');对这个数组进行排序, "这还不容易",某些同志先不要激动,听我慢慢说;
要求排序的结果是按类别排序,比如 1810的是一个类别,同一个类别再按照数字大小排序,那么1810所排的结果如下:
...
'Acer Aspire 1810 Timeline',
'Acer Aspire 1810T Timeline',
'Acer Aspire 1810TZ Timeline',//这里注意,同一大小数字按照数字后面的字母类别排序,同时数字后面的字母由少到多排序
'Acer Aspire 18100 Timeline',
...
以此类推,就是按照同类别的大小长短排序!
有劳各位了!
$arr=array(
'Acer TravelMate 220',
'Acer TravelMate 2200',
'Acer TravelMate 222',
'Acer TravelMate 223',
'Acer TravelMate 225',
'Acer TravelMate 230',
'Acer TravelMate 2300',
'Acer TravelMate 2301'
'Acer Aspire 1810 Timeline',
'Acer Aspire 18100 Timeline',
'Acer Aspire 1810T Timeline',
'Acer Aspire 1810TZ Timeline',
'Acer Aspire 1820P Timeline',
'Acer Aspire 18200P Timeline'
'Acer Aspire 1821P Timeline',
'Acer Aspire 1830T TimelineX',
'Acer Aspire 3410T Timeline',
'Acer Aspire 3810T Timeline');对这个数组进行排序, "这还不容易",某些同志先不要激动,听我慢慢说;
要求排序的结果是按类别排序,比如 1810的是一个类别,同一个类别再按照数字大小排序,那么1810所排的结果如下:
...
'Acer Aspire 1810 Timeline',
'Acer Aspire 1810T Timeline',
'Acer Aspire 1810TZ Timeline',//这里注意,同一大小数字按照数字后面的字母类别排序,同时数字后面的字母由少到多排序
'Acer Aspire 18100 Timeline',
...
以此类推,就是按照同类别的大小长短排序!
有劳各位了!
sort($arr, SORT_STRING);//就可以排序,,,如果只要某个分类,可以遍历一次,把需要的匹配出来即可
print_r($arr);
//这种是按字符排序,遍历的结果如下:
Acer Aspire 1810 Timeline
Acer Aspire 18100 Timeline
Acer Aspire 1810T Timeline
Acer Aspire 1810TZ Timeline
Acer Aspire 1820P Timeline
Acer Aspire 1830T TimelineX
Acer TravelMate 220
Acer TravelMate 2200
Acer TravelMate 222
Acer TravelMate 223
Acer TravelMate 2300
Acer TravelMate 2301
Bcer TravelMate 230
Ccer TravelMate 225//我想排后的结果如下:Acer Aspire 1810 Timeline
Acer Aspire 1810T Timeline
Acer Aspire 1810TZ Timeline
Acer Aspire 18100 Timeline //分类后再按照 数字大小 数字后面字母长短 排序,
Acer Aspire 1820P Timeline
Acer Aspire 1821P Timeline
Acer Aspire 1830T TimelineX
Acer Aspire 18200P Timeline
Acer Aspire 3410T Timeline
Acer Aspire 3810T Timeline
Acer TravelMate 220
Acer TravelMate 222
Acer TravelMate 223
Acer TravelMate 225
Acer TravelMate 230
Acer TravelMate 2200
Acer TravelMate 2300
Acer TravelMate 2301
(
[0] => Acer Aspire 1810 Timeline
[1] => Acer Aspire 1810T Timeline
[2] => Acer Aspire 1810TZ Timeline
[3] => Acer Aspire 1820P Timeline
[4] => Acer Aspire 1821P Timeline
[5] => Acer Aspire 1830T TimelineX
[6] => Acer Aspire 3410T Timeline
[7] => Acer Aspire 3810T Timeline
[8] => Acer Aspire 18100 Timeline
[9] => Acer Aspire 18200P Timeline
[10] => Acer TravelMate 220
[11] => Acer TravelMate 222
[12] => Acer TravelMate 223
[13] => Acer TravelMate 225
[14] => Acer TravelMate 230
[15] => Acer TravelMate 2200
[16] => Acer TravelMate 2300
[17] => Acer TravelMate 2301
)
Array
(
[0] => Acer Aspire 1810 Timeline
[1] => Acer Aspire 1810T Timeline
[2] => Acer Aspire 1810TZ Timeline
[3] => Acer Aspire 18100 Timeline
[4] => Acer Aspire 1820P Timeline
[5] => Acer Aspire 18200P Timeline
[6] => Acer Aspire 1821P Timeline
[7] => Acer Aspire 1830T TimelineX
[8] => Acer Aspire 3410T Timeline
[9] => Acer Aspire 3810T Timeline
[10] => Acer TravelMate 220
[11] => Acer TravelMate 2200
[12] => Acer TravelMate 222
[13] => Acer TravelMate 223
[14] => Acer TravelMate 225
[15] => Acer TravelMate 230
[16] => Acer TravelMate 2300
[17] => Acer TravelMate 2301
)$arr=array(
'Acer TravelMate 220',
'Acer TravelMate 2200',
'Acer TravelMate 222',
'Acer TravelMate 223',
'Acer TravelMate 225',
'Acer TravelMate 230',
'Acer TravelMate 2300',
'Acer TravelMate 2301' ,
'Acer Aspire 1810 Timeline',
'Acer Aspire 18100 Timeline',
'Acer Aspire 1810T Timeline',
'Acer Aspire 1810TZ Timeline',
'Acer Aspire 1820P Timeline',
'Acer Aspire 18200P Timeline',
'Acer Aspire 1821P Timeline',
'Acer Aspire 1830T TimelineX',
'Acer Aspire 3410T Timeline',
'Acer Aspire 3810T Timeline');foreach($arr as $v) {
preg_match('/(\w+ \w+) (\d+)(\w*)( |$)/i', $v, $r);
$a[] = $r[1];
$b[] = sprintf('%-10s', $r[2]);
$c[] = $r[3];
}
array_multisort($a, $b, $c, $arr);
print_r($arr);