*/
//定义数组 $arr = [123,12,3,45,235,3,545,56,4,5,56,568,568,22,132,123,42,523,345,34,46,64,1233]; // $arr = [2,343,342,1,128,43,4249,814,687,654,3]; //第一步先定义数组 十个桶子 $sort = []; //创建十个桶 下标分别是桶号 for($i = 0;$i<=9;$i++) { $sort[$i] = []; } //获取数组的大小 $count = count($arr); //获取数组的长度,数组中共有多少个元素 //获取数组中最大的值 $max = max($arr); //获取数组中最大的值 //统计最大值有多少位 $len = strlen($max); //循环需要把对应桶子的数放入对应的桶子中 for($i = 0;$i<$len;$i++) { //计算基数 $exp = pow(10,$i); //进入桶子中 for($j = 0;$j<$count;$j++) { $num = ($arr[$j]/$exp); //求出所对应的位数上的数了 $sort[$num][] = $arr[$j]; //放入桶内 } //把分好的桶子里的数接着连起来进行下一位的比较 $arr = []; //先把数组清空 等会把带排好的数放进arr foreach($sort as $k=>$v) { //直接把sort的值按照顺序放进来arr中 $arr = array_merge($arr,$v); $sort[$k] = []; } } echo "<pre>"; print_r($arr);