免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2412 | 回复: 1
打印 上一主题 下一主题

PHP趣味开发一 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-10 21:05 |只看该作者 |倒序浏览
PHP趣味开发一















最近时间有些充裕,利用PHP实现了几个有意思的东东,拿来分享一下:



Php代码
  1. 1.<?php   
  2. 2./**
  3. 3. * php画个菱形
  4. 4. *  
  5. 5. * 思路:多少行for一次,然后在里面空格和标记符号for一次。
  6. 6. *  
  7. 7. * @author flyer0126
  8. 8. * @date 2011-12-09
  9. 9. *  
  10. 10. */  
  11. 11.  
  12. 12.//上半部分  
  13. 13.for ($i=0; $i<10; $i++){  
  14. 14.    for ($j=0; $j<9-$i; $j++){  
  15. 15.        echo "&nbsp;";  
  16. 16.    }  
  17. 17.    for ($k=0; $k<(2*$i+1); $k++){  
  18. 18.        echo "`";  
  19. 19.    }  
  20. 20.    echo "<br/>";  
  21. 21.}  
  22. 22.  
  23. 23.//下半部分  
  24. 24.for ($i=1; $i<10; $i++){  
  25. 25.    for ($j=0; $j<$i; $j++){  
  26. 26.        echo "&nbsp;";  
  27. 27.    }  
  28. 28.    for ($k=(18-2*$i+1); $k>0; $k--){  
  29. 29.        echo "`";  
  30. 30.    }  
  31. 31.    echo "<br/>";  
  32. 32.}  
  33. 33.  
  34. 34./**
  35. 35. * PHP实现杨辉三角
  36. 36. *  
  37. 37. * 思路:每一行的第一位和最后一位是1,没有变化,中间是前排一位与左边一排的和,这种算法是用一个二维数组保存,一行一行的输出。
  38. 38. * 1
  39. 39.   1 1
  40. 40.   1 2 1
  41. 41.   1 3 3 1
  42. 42.   1 4 6 4 1
  43. 43.   1 5 10 10 5 1
  44. 44. *
  45. 45. * @author flyer0126
  46. 46. * @date 2011-12-09
  47. 47. *  
  48. 48. */  
  49. 49.  
  50. 50.//变量初始化  
  51. 51.$arr = array();  
  52. 52.  
  53. 53.//设置固定值1  
  54. 54.for ($i=0; $i<6; $i++){  
  55. 55.    $arr[$i][0] = 1;  
  56. 56.    $arr[$i][$i] = 1;  
  57. 57.}  
  58. 58.  
  59. 59.//计算中间值  
  60. 60.for ($i=2; $i<6; $i++){  
  61. 61.    for ($j=1; $j<$i; $j++){  
  62. 62.        $arr[$i][$j] = $arr[$i-1][$j-1] + $arr[$i-1][$j];  
  63. 63.    }  
  64. 64.}  
  65. 65.  
  66. 66.//排列输出展示  
  67. 67.for ($i=0; $i<count($arr); $i++){  
  68. 68.    for ($j=0; $j<count($arr[$i]); $j++){  
  69. 69.        echo $arr[$i][$j]."&nbsp;";  
  70. 70.    }  
  71. 71.    echo "<br/>";  
  72. 72.}  
  73. 73.  
  74. 74./**
  75. 75. * 在一组数中,要求插入一个数,按其原来顺序插入,维护原来排序方式。
  76. 76. *  
  77. 77. * 思路:找到比要插入数大的那个位置,替换,然后把后面的数后移一位。
  78. 78. *  
  79. 79. * @author zhangh
  80. 80. * @date 2011-12-08
  81. 81. *  
  82. 82. */  
  83. 83.  
  84. 84.//初始化数组变量(升序)  
  85. 85.$arr = array(1, 3, 5, 7, 9);  
  86. 86.  
  87. 87.//插入6  
  88. 88.for ($i=0; $i<count($arr); $i++){  
  89. 89.    if($arr[$i] < 6 && 6 < $arr[$i+1]){  
  90. 90.        $tmp1 = $arr[$i+1];  
  91. 91.        $k = count($arr)+1;  
  92. 92.        $arr[$i+1] = 6;  
  93. 93.        for ($j=$i+2; $j<$k; $j++){  
  94. 94.            ($k > $j+1) ? $tmp2 = $arr[$j] : '';  
  95. 95.            $arr[$j] = $tmp1;  
  96. 96.            $tmp1 = $tmp2;  
  97. 97.        }  
  98. 98.        break;  
  99. 99.    }     
  100. 100.}  
  101. 101.  
  102. 102.//输出  
  103. 103.print_r($arr);  
  104. 104.//Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 6 [4] => 7 [5] => 9 )   
  105. 105.  
  106. 106.?>
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-12-19 23:48 |只看该作者
很好玩啊...谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP