Skip to content

Instantly share code, notes, and snippets.

@dz1984
Last active January 3, 2016 20:39
Show Gist options
  • Save dz1984/8516077 to your computer and use it in GitHub Desktop.
Save dz1984/8516077 to your computer and use it in GitHub Desktop.
依照同路名不同段號排序。 http://ideone.com/AiRm6m
<?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) "承德路九段"
}
*/
?>
@dz1984
Copy link
Author

dz1984 commented Feb 19, 2014

output

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