PHP打印环状数字圈

原创
2016-06-13 10:41:34 706浏览

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

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

  1. /**
  2. * 二维数组排序
  3. * @param array $array
  4. */
  5. function sort_recursive(&$array){
  6. foreach($array as $key=>$edge){
  7. ksort($edge,true);
  8. $array[$key]=$edge;
  9. }
  10. ksort($array,true);
  11. }
  12. /**
  13. * 生成一圈环状数字
  14. * @param array $cotainer 二维数组,包含生成的圈
  15. * @param int $start_value 该圈的起始值
  16. * @param int $x 该圈的偏移值
  17. * @param int $grids_edge 每条边的数字个数
  18. */
  19. function generate(&$container,$start_value,$x,$grids_edge){
  20. $rec_times=ceil($grids_edge/2);
  21. $center=$grids_edge&1?false:$start_value+4*$rec_times*($rec_times+1);
  22. if($center){
  23. $index=$x+ceil($grids_edge/2);
  24. $container[$index][$index]=$center;
  25. }
  26. for($i=0;$i<$grids_edge;$i++){
  27. $right=$x+$grids_edge;
  28. $basevalue=$start_value+$i;
  29. $container[$x][$x+$i]=$base_value;
  30. $container[$x+$i][$right]=$grids_edge+$base_value;
  31. $container[$right][$right-$i]=$grids_edge*2+$base_value;
  32. $container[$right-$i][$x]=$grids_edge*3+$base_value;
  33. }
  34. }
  35. $container=array();
  36. $data=array(
  37. 1 =>array(1,6),
  38. 25=>array(2,4),
  39. 41=>array(3,2),
  40. );
  41. /*
  42. $data=array(
  43. 1 =>array(1,2),
  44. );
  45. $data=array(
  46. 1&

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。