$a = 20; //控制循环的行数for ($i = 1; $i <= $a; $i++) { //$b代表空格数目 for($b=1;$b<=$a-$i;$b++){ //控制输出的空格数 echo " "; } //$c 代表星号数目 for($c=1;$c<=($i-1)*2+1;$c++){ //控制输出的*数目 if($c==1||$c==($i-1)*2+1){ //注意这里面的等号是双等,因为比较的是两边相等, //也可以用if控制,等同switch控制,一样的效果 echo "*"; }else{ echo " "; } /* switch($c){ //用switch控制输出每行第一个和最后一个为*,其他的为空格 case 1: echo "*"; break; case ($i-1)*2+1: echo "*";break; default:echo " ";break; }*/ } echo "<br/>"; } //上面的循环负责菱形的上半部分,下面的循环负责菱形的下半部分 for($i=$a-1;$i>=1;$i--){ //$b代表空格数目 for($b=1;$b<=$a-$i;$b++){ //控制输出的空格数 echo " "; } //$c 代表星号数目 for($c=1;$c<=($i-1)*2+1;$c++){ //控制输出的*数目 if($c==1||$c==($i-1)*2+1){ //注意这里面的等号是双等,因为比较的是两边相等, //也可以用if控制,等同switch控制,一样的效果 echo "*"; }else{ echo " "; } /*switch($c){//用switch控制输出每行第一个和最后一个为*,其他的为空格 case 1: echo "*"; break; case ($i-1)*2+1: echo "*";break; default:echo " ";break; }*/ } echo "<br/>";
<?php $n = 7;//你可以自己定义的菱形边长 //上半部分 $i=1; do{ $j=0; do{ echo " "; $j++; }while($j<$n-$i+1); $k=1; do{ if($i==1){ echo "*"; }else{ if($k==1 || $k==2*$i-1){ echo "*"; }else { echo " "; } } $k++; }while($k<=2*$i-1); $i++; echo "<br/>"; }while($i<=$n); //下半部分 $i=$n; do{ $j=0; do{ echo " "; $j++; }while($j<=$n-$i+1); $k=1; do{ if($k==2*$i-3||$k==1){ echo "*"; }else{ echo " "; } $k++; }while($k<=2*$i-3); $i--; echo "<br/>"; }while($i>=2);?>顺带一提,用for循环好写很多。。