Last active
January 3, 2016 20:39
-
-
Save dz1984/8516077 to your computer and use it in GitHub Desktop.
依照同路名不同段號排序。 http://ideone.com/AiRm6m
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$rd_list = array('中山北路一段','承德路九段','中山北路五段','承德路三段','中山北路六段','承德路二段','中山北路四段','中山北路七段'); | |
usort($rd_list,function($a,$b){ | |
$pattern = '/(.*?)([一二三四五六七八九])段/u'; | |
$num = array('一','二','三','四','五','六','七','八','九'); | |
if (preg_match($pattern,$a,$matches_a) && preg_match($pattern,$b,$matches_b)){ | |
if ($matches_a[1] == $matches_b[1]){ | |
return array_search($matches_a[2],$num)-array_search($matches_b[2],$num); | |
} | |
} | |
$a_big5 = iconv('UTF-8','big5',$a); | |
$b_big5 = iconv('UTF-8','big5',$b); | |
return strcmp($a_big5,$b_big5); | |
}); | |
var_dump($rd_list); | |
/* | |
Output: | |
Before sort: | |
array(8) { | |
[0]=> | |
string(18) "中山北路一段" | |
[1]=> | |
string(15) "承德路九段" | |
[2]=> | |
string(18) "中山北路五段" | |
[3]=> | |
string(15) "承德路三段" | |
[4]=> | |
string(18) "中山北路六段" | |
[5]=> | |
string(15) "承德路二段" | |
[6]=> | |
string(18) "中山北路四段" | |
[7]=> | |
string(18) "中山北路七段" | |
} | |
After sort: | |
array(8) { | |
[0]=> | |
string(18) "中山北路一段" | |
[1]=> | |
string(18) "中山北路四段" | |
[2]=> | |
string(18) "中山北路五段" | |
[3]=> | |
string(18) "中山北路六段" | |
[4]=> | |
string(18) "中山北路七段" | |
[5]=> | |
string(15) "承德路二段" | |
[6]=> | |
string(15) "承德路三段" | |
[7]=> | |
string(15) "承德路九段" | |
} | |
Success time: 0.01 memory: 20680 signal:0 | |
Before sortarray(8) { | |
[0]=> | |
string(18) "中山北路一段" | |
[1]=> | |
string(15) "承德路九段" | |
[2]=> | |
string(18) "中山北路五段" | |
[3]=> | |
string(15) "承德路三段" | |
[4]=> | |
string(18) "中山北路六段" | |
[5]=> | |
string(15) "承德路二段" | |
[6]=> | |
string(18) "中山北路四段" | |
[7]=> | |
string(18) "中山北路七段" | |
} | |
After sort:array(8) { | |
[0]=> | |
string(18) "中山北路一段" | |
[1]=> | |
string(18) "中山北路四段" | |
[2]=> | |
string(18) "中山北路五段" | |
[3]=> | |
string(18) "中山北路六段" | |
[4]=> | |
string(18) "中山北路七段" | |
[5]=> | |
string(15) "承德路二段" | |
[6]=> | |
string(15) "承德路三段" | |
[7]=> | |
string(15) "承德路九段" | |
} | |
*/ | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
output