龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

PHP打印环状数圈

时间:2014-07-22 14:52来源: 作者: 点击:
分享到:
如题: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
    /** 
     * 二维数组排序 
     * @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;  
精彩图集

赞助商链接