原理就是利用循环,这里使用的是while。
代码如下:
<?php $line = 1; while($line <=5) { //初始空格数和星星数 $kg = $xx = 1; //计算:每行星星前的空格 = 总行数 - 当前所在行数 $hang_kg = 5 - $line; //计算:每行星星数 = 当前行数 *2 - 1; $hang_xx = $line *2 - 1; //循环每行的空格 while($kg <= $hang_kg) { echo " "; ++$kg; } //循环每行的星星 while($xx <= $hang_xx) { echo "*"; ++$xx; } echo "<br>"; ++$line; }
首先先了解while循环
while(判断条件){
代码
}
如果直接打个”true“的话,那就拥有的陷入死循环了。只有给个初值,然后在小于或大于这个范围循环才是王道!
而这金字塔效果,其实也是通过空格和星星的个数一行一行的叠加出来的。并且总共有几行。
首先要知道一行要有几个空格
第一行4个
第二行3个
第三行2个
第四行1个
第五行0个
于是有五行,每行是总行数 - 1;这就为循环打下基础了。
然后是知道每一行的星星数
第一行1个
第二行3个
第三行5个
第四行7个
第五行9个
于是每行等于 n=n*2-1;就是奇数的公式
那么当知道这两个关键,就进行循环吧!
先给个行数 $line=1;
用来做循环变量:
while($line <=5){
//这里是空格和星星的循环代码
echo "<br>";
++$line;
}
循环5次,行数就出来了!
然后再在里面补空格和星星,即:
先给空格的个数定义个变量,$kg=1;
然后获得每一行的空格数,并定义变量:$hang_kg = 总行数5 - 当前行数$line;
于是循环当前个数,即:
while($kg <= $hang_kg){
echo " ";
++$kg;
}
这是单行循环的个数,如上面是初始为1,小于等于4,所以有四个空格
当镶在上面while($line<=5){}的循环里后,在第二行就变成了:初始值为1,但小于等于3(因为是第二行,所以总行数5 - 第二行2),所以有三个空格。
而有了空格,没星星也不成效果啊!
所以同上述的一样。
定义个初始星星变量:$xx = 1;
然后计算星星数,定义变量:$hang_xx = $line * 2 - 1; //当前行数乘以2减1
循环:while($xx <= $hang_xx) {
echo "*";
++$xx;
}
同理,在空格后面追加星星的个数。
第一行乘以2-1,有一颗
第二行乘以2-1,有三颗
因为各自独立,所以是并列关系
//循环每行的空格 while($kg <= $hang_kg) { echo " "; ++$kg; } //循环每行的星星 while($xx <= $hang_xx) { echo "*"; ++$xx; }
然后再追加外面的大循环
while($line <=5) { //循环每行的空格 //循环每行的星星 echo "<br>"; ++$line; }
哎!原本想追求精简,简单易懂。结果写着写着字就多了!
还是不熟悉啊!
话说我要是写小说也能这么能水,也总比半天憋不出半个字强啊!
只可惜,写不出啊!明明都积累了那么多素材。
还是说,这就充分体现了,何为现实的不如意?
话说这现实先生可真不容易啊!