PHP趣味开发一
最近时间有些充裕,利用PHP实现了几个有意思的东东,拿来分享一下:
<?php /** * php画个菱形 * * 思路:多少行for一次,然后在里面空格和标记符号for一次。 * * @author flyer0126 * @date 2011-12-09 * *///上半部分for ($i=0; $i<10; $i++){for ($j=0; $j<9-$i; $j++){echo " ";}for ($k=0; $k<(2*$i+1); $k++){echo "`";}echo "<br/>";}//下半部分for ($i=1; $i<10; $i++){for ($j=0; $j<$i; $j++){echo " ";}for ($k=(18-2*$i+1); $k>0; $k--){echo "`";}echo "<br/>";}/** * PHP实现杨辉三角 * * 思路:每一行的第一位和最后一位是1,没有变化,中间是前排一位与左边一排的和,这种算法是用一个二维数组保存,一行一行的输出。 * 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 * * @author flyer0126 * @date 2011-12-09 * *///变量初始化$arr = array();//设置固定值1for ($i=0; $i<6; $i++){$arr[$i][0] = 1;$arr[$i][$i] = 1;}//计算中间值for ($i=2; $i<6; $i++){for ($j=1; $j<$i; $j++){$arr[$i][$j] = $arr[$i-1][$j-1] + $arr[$i-1][$j];}}//排列输出展示for ($i=0; $i<count($arr); $i++){for ($j=0; $j<count($arr[$i]); $j++){echo $arr[$i][$j]." ";}echo "<br/>";}/** * 在一组数中,要求插入一个数,按其原来顺序插入,维护原来排序方式。 * * 思路:找到比要插入数大的那个位置,替换,然后把后面的数后移一位。 * * @author flyer0126 * @date 2011-12-08 * *///初始化数组变量(升序)$arr = array(1, 3, 5, 7, 9);//插入6for ($i=0; $i<count($arr); $i++){if($arr[$i] < 6 && 6 < $arr[$i+1]){$tmp1 = $arr[$i+1];$k = count($arr)+1;$arr[$i+1] = 6;for ($j=$i+2; $j<$k; $j++){($k > $j+1) ? $tmp2 = $arr[$j] : '';$arr[$j] = $tmp1;$tmp1 = $tmp2;}break;}}//输出print_r($arr);//Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 6 [4] => 7 [5] => 9 ) ?>