Home >Backend Development >PHP Tutorial >PHP和MySQL入门(5)
控制语句
在我们之前看到的PHP的代码的例子中,要么是只有一个单独的向Web页面输出文本语句;要么是一系列的依次执行的语句。如果你用其他语言编写过程序,你应该知道,实际上很少有这么简单的程序。
和任何其他的编程语言一样,PHP也提供了很方便地处理脚本中的“控制流”的方法。就是说,PHP中包含了一些特殊的语句,通过这些语句你可是不受依次执行的顺序的束缚。这种语句被称之为“控制语句”。不理解?不要担心!有一些例子会很好地帮助你。
最基本最常用到的控制语句是if-else语句。它的结构是这样的:
if ( //如果 } else { //(可选)如果 } |
这个控制语可以让我们告诉PHP根据一些条件的真假来决定相应地执行哪一组语句。如果你不觉得我这么做有点空虚,我们可以将我们刚才建立的welcome.php文件修改为:
if ( $name == "Kevin" ) { echo( "Welcome, oh glorious leader!" ); } else { echo( "Welcome, $name!" ); } |
现在,如果传递给这个页面的name变量的值是Kevin,将显示一个特殊的信息。否则,将显示一个包含输入的name的普通的信息。
需要指出的是,在这个结构中,“else子句”(它指出了if-else结构中条件为假时执行的内容)是可选的。对于上面的例子,如果我们的目的是当适当的名字被输入时,显示特殊的信息,否则就什么也不显示。这段代码应该是这样的:
if ( $name == "Kevin" ) { echo( "Welcome, oh glorious leader!" ); } |
在上面条件中所使用的==是用比较两个值是否相等的运算符。要特别记住的是在这儿你需要输入两 个等号。如果你输入的是一个等号,你实际上使用的是前面我们 讨论过的赋值运算符,你将不再是对两个变量的值进行比较,而是给变量赋了一个新值(这个操作会附带地返回一个true)。这样做的结果不仅仅是导致这个条 件永远是true,它还可能改变我们所要检查的变量的值,这可能会导致很多问题。
防止发生这种错误有一种安全的做法,那就是象下面这样颠倒用来比较的变量和常量的位置:
if ( "Kevin" == $name ) { |
这样做的效果是完全相同的,但是当你忘了第二个等号时,我们来看看会发生什么情况。PHP会试图将变量($name)的值插入常量("Kevin")中。因为你不能改变常量的值,PHP会中断并提示一个错误信息,这将立即提示你忘了第二个等于号!
条件可以比单个的比较是否相等来得更复杂。回忆我们修改的welcome.php3,它是可以同时获取firstname和lastname的。如果我们想要为某个特定的人显示一个特殊的信息,我们可以同时比较这两个变量:
if ( "Kevin" == $firstname and "Yank" == $lastname ) { echo( "Welcome, oh glorious leader!" ); } |
只有$firstname的值是Kevin,而且$lastname的值是Yank时这个条件 才会返回真。and的意义就是只有两个比较都为真时,整个条 件才会返回真。还有一个符号是or,这使得两个比较中至少有一个为真时,整个条件就返回真。如果你对JavaScript和C中的运算符 (&&(and)和||(or))熟悉的话,你也可以在PHP中同样地使用它们。
在下面我们将看到一些更复杂的比较。现在,我们只需要对if-else语句有个基本的理解就可以了。
另一个常用的PHP控制语句是while循环。if-else语句使我们可以根据条件选择是否执行一组语句,while循环使我们可以根据条件来决定重复执行一组语句多少次。while循环的基本格式应该是这样的:
while (
这和一个没有else子句的if-else 语句非常相象。不同点在于当条件为真时语句执行完后,将不再是接着执行结束符(})后面的语句,而是再次检查条件。如果这个条件仍为真。将会重复执行语 句,直到条件不再为真时为止。当这个条件首次返回假时(不管是第几次检查它),将会跳转执行循环后面的语句(在结束符后面)。