PHP思想养成-打印菱形 发表于 2015-08-22 | 分类于 PHP 拿出一张纸画个图,站在代码外面的世界,分析一下功能实现的步骤,再讲思想转换成代码 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465<?php header("content-type:text/html;charset=utf-8");// PHP打印菱形的两种方法,备注的信息由于定义层数是从0开始,所以思想与代码有略微区别// copyright :uisteecho "方法一:通过判定半个菱形的层数将剩余层数输出<br/>";//定义所打印菱形的上半区的层数$row = 5;//循环上半区层数从第0层到层数减一for ($i=0; $i < $row; $i++) { //先打印左侧的空格:总层数减去当前层数减1 for ($j=0; $j < $row-$i-1; $j++) { echo " "; } //打印“*”号,当前层数乘以2加1 for ($k=0; $k < $i*2+1; $k++) { echo "*"; } echo "<br/>";}//循环下班去层数从上半区总层数减1for ($i=0; $i < $row-1; $i++) { //打印左侧空格等于下班去当前的层数 for ($j=0; $j <= $i; $j++) { echo " "; } //打印“*”号,下半区总层数减去当前层数乘以2加1 for ($k=0; $k < ($row-1-$i)*2-1; $k++) { echo "*"; } echo "<br/>";}echo "<br/>方法:通过整个层数判定分区进行输出(必须为奇数层数)<br/>";//定义所打印菱形的总层数$row=9;//定义上半区的总层数$n = ceil($row/2);//循环所有层数for ($i=0; $i < $row; $i++) { //判断若小于上半区层数进行上半区的循环 if ($i<$n) { //打印空格上半区总层数减去当前层数 for ($j=0; $j < $n-$i-1; $j++) { echo " "; } //打印“*”号,当前层数乘以2减1 for ($k=0; $k < $i*2+1; $k++) { echo "*"; } echo "<br/>"; }else{ //如果条件不满足上去,开始打印下半区信息 //先打印空格,等于当前层数减去上半区层数 for ($j=0; $j < $i-$n+1; $j++) { echo " "; } //打印“*”号,等于总层数减去已经打印层数乘以2加1 for ($k=0; $k < ($row-$i)*2-1; $k++) { echo "*"; } echo "<br/>"; }} ?>