PHP思想养成-打印菱形

拿出一张纸画个图,站在代码外面的世界,分析一下功能实现的步骤,再讲思想转换成代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php 
header("content-type:text/html;charset=utf-8");
// PHP打印菱形的两种方法,备注的信息由于定义层数是从0开始,所以思想与代码有略微区别
// copyright :uiste
echo "方法一:通过判定半个菱形的层数将剩余层数输出<br/>";
//定义所打印菱形的上半区的层数
$row = 5;
//循环上半区层数从第0层到层数减一
for ($i=0; $i < $row; $i++) {
//先打印左侧的空格:总层数减去当前层数减1
for ($j=0; $j < $row-$i-1; $j++) {
echo "&nbsp";
}
//打印“*”号,当前层数乘以2加1
for ($k=0; $k < $i*2+1; $k++) {
echo "*";
}
echo "<br/>";
}
//循环下班去层数从上半区总层数减1
for ($i=0; $i < $row-1; $i++) {
//打印左侧空格等于下班去当前的层数
for ($j=0; $j <= $i; $j++) {
echo "&nbsp";
}
//打印“*”号,下半区总层数减去当前层数乘以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 "&nbsp";
}
//打印“*”号,当前层数乘以2减1
for ($k=0; $k < $i*2+1; $k++) {
echo "*";
}
echo "<br/>";
}else{
//如果条件不满足上去,开始打印下半区信息
//先打印空格,等于当前层数减去上半区层数
for ($j=0; $j < $i-$n+1; $j++) {
echo "&nbsp";
}
//打印“*”号,等于总层数减去已经打印层数乘以2加1
for ($k=0; $k < ($row-$i)*2-1; $k++) {
echo "*";
}
echo "<br/>";
}
}

?>