PHP打印环状数圈

如题:
int i=[number];
打印如下的图形:

1  2  3  4
12 13 14 5
11 16 15 6
10 9  8  7

PHP代码如下

 

function sort_recursive(&$array){
    foreach($array as $key=>$edge){
        ksort($edge,true);
        $array[$key]=$edge;
    }
    ksort($array,true);
}

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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值