PHP打印环状数圈
如题:br / $i=[number];br / 打印如下的图形:br / br / 1 2 3 4br / 12 13 14 5br / 11 16 15 6br / 10 9 8 7
如题:
$i=[number];
打印如下的图形:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
$i=[number];
打印如下的图形:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
/** * 二维数组排序 * @param array $array */ function sort_recursive(&$array){ foreach($array as $key=>$edge){ ksort($edge,true); $array[$key]=$edge; } ksort($array,true); } /** * 生成一圈环状数字 * @param array $cotainer 二维数组,包含生成的圈 * @param int $start_value 该圈的起始值 * @param int $x 该圈的偏移值 * @param int $grids_edge 每条边的数字个数 */ function generate(&$container,$start_value,$x,$grids_edge){ $rec_times=ceil($grids_edge/2); $center=$grids_edge&1?false:$start_value+4*$rec_times*($rec_times+1); if($center){ $index=$x+ceil($grids_edge/2); $container[$index][$index]=$center; } for($i=0;$i<$grids_edge;$i++){ $right=$x+$grids_edge; $basevalue=$start_value+$i; $container[$x][$x+$i]=$base_value; $container[$x+$i][$right]=$grids_edge+$base_value; $container[$right][$right-$i]=$grids_edge*2+$base_value; $container[$right-$i][$x]=$grids_edge*3+$base_value; } } $container=array(); $data=array( 1 =>array(1,6), 25=>array(2,4), 41=>array(3,2), ); /* $data=array( 1 =>array(1,2), ); $data=array( 1 =>array(1,5), 21=>array(2,3), 33=>array(3,1), ); $data=array( 1 =>array(1,3), 13=>array(2,1), ); */ foreach($data as $key=>$val){ generate($container,$key,$val[0],$val[1]); } sort_recursive($container); $table='<table border=1>'; foreach($container as $key=>$edge){ $table.='<tr>'; foreach($edge as $val){ $table.='<td>'.$val.'</td>'; } $table.='</tr>'; } $table.='</table>'; echo $table;
- 上一篇:根据图片色阶确定位置打水印
- 下一篇:汉字拼音库
精彩图集
精彩文章