用一个例子学习PHP的选择和循环:
在C语言的学习中,会用打印三角形来掌握选择和循环结构,由于PHP和C语言是如此类似,用这个例子可以快速弄清PHP的选择和循环结构。
需要的一点预备知识是如何在网页上输出空格和换行。
网页上输出空格用 好像就是no break space的缩写;网页上输出换行用<br/>。另外有一个问题就是字符串输出用单引号和双引号的区别,在这个例子里应该没有区别。
先来看一下输出结果的样子:
*
* *
* *
* *
* *
* *
* *
* *
* *
* * * * * * * * * * * * * * * * * **
如果用C语言做过这个例子,我们知道,每一行都是先输出若干空格,再输出若干*,如果要打成空心,也只要规定在某个数字时打印*,其他时候一律打印空格。
现在设想如何用程序实现,需要用变量了控制:1.打印的是第几行,用变量$i,2.这一行需要打印几个空格,用变量$j,3.这一行打印多少*,用变量$k。
先不考虑空心的问题,可以观察发现,有这样的规律:
行号$i | 每行输出的*数 | 每行输出的空格数 |
---|---|---|
1 | 1 | 9 |
2 | 3 | 8 |
3 | 5 | 7 |
4 | 7 | 6 |
5 | 9 | 5 |
6 | 11 | 4 |
7 | 13 | 3 |
8 | 15 | 2 |
9 | 17 | 1 |
10 | 19 | 0 |
也就是每行输出的*数=2*$i-1,每行输出的空格数=10-$i,这样,就可以很容易写出代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<?php
$n=10;
for($i=1;$i<=$n;$i++){
for($j=1;$j<=$n-$i;$j++)
echo ' ';
for($k=1;$k<=2*$i-1;$k++){
if($i==$n||$k==1||$k==2*$i-1)
echo '*';
else
echo ' ';
}
echo '<br/>';
}
?>
</body>
</html>