php do...while循环空心菱形

兄弟们帮我问下,php do...while循环空心菱形
最新回答
为你╰我宁愿放下

2024-11-08 04:22:49

$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/>";
侞此の゛肤浅

2024-11-08 00:35:50

<?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循环好写很多。。