Home >Backend Development >PHP Tutorial >数组的排序问题!

数组的排序问题!

WBOY
WBOYOriginal
2016-06-23 13:52:09886browse

$a=array('张三'=>'肆佰贰拾叁','李四'=>'壹佰玖拾','王五'=>'柒佰','孙六'=>'捌仟叁佰陆拾','陈七'=>'肆万伍仟贰佰');

将这个数组按汉子代表的数字大小进行排序,不改变索引,最后输出的结果应为如下格式:

array('李四'=>'壹佰玖拾','张三'=>'肆佰贰拾叁','王五'=>'柒佰','孙六'=>'捌仟叁佰陆拾','陈七'=>'肆万伍仟贰佰');

代码尽量简单 我是新手,最后排序用数组排序函数


回复讨论(解决方案)

$a = array(  '张三' => '肆佰贰拾叁',  '李四' => '壹佰玖拾',  '王五' => '柒佰',  '孙六' => '捌仟叁佰陆拾',  '陈七' => '肆万伍仟贰佰');$t = array_map('cton', $a);array_multisort($t, $a);print_r($a);function cton($s) {  $dw = array('拾' => 10, '佰' => 100, '仟' => 1000, '万' => 10000);  $digital = array('零' => 0, '壹' => 1, '贰' => 2, '叁' => 3, '肆' => 4,                   '伍' => 5, '陆' => 6, '柒' => 7, '捌' => 8, '玖' => 9);  $ar = preg_split('/(' . join('|', array_keys($dw)) . ')/',                   $s, -0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);  for($i=0; $i<count($ar); $i+=2) {    $res[] = $digital[$ar[$i]] * (isset($ar[$i+1]) ? $dw[$ar[$i+1]] : 1);  }  return array_sum($res);}
Array(    [李四] => 壹佰玖拾    [张三] => 肆佰贰拾叁    [王五] => 柒佰    [孙六] => 捌仟叁佰陆拾    [陈七] => 肆万伍仟贰佰)

$ar = preg_split('/(' . join('|', array_keys($dw)) . ')/',
                   $s, -0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

这一段能注释一下吗?谢谢

'/(' . join('|', array_keys($dw)) . ')/'
构造一个 /(拾|佰|仟|万)/ 这样的正则规则串

至于 preg_split 函数如何使用,手册中都说的很清楚了

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn