资源描述
PHP基本语法详解
您无法在浏览器中通过查瞧源文档得方式来查瞧 PHP 得源代码 您只能瞧到 PHP 文件得输出,即纯粹得 HTML。这就是因为在结果返回浏览器之前,脚本就已经在服务器执行了。
PHP标记
在之前得得例子中得PHP代码就是以“<?php”为开始,“?>”为结束,这类似于所有得HTML标记,因为它们都就是以小于号为开始,以大于号为结束得。这些符号就叫做PHP标记。
PHP标记中有4中不同得风格供我们使用
*XML风格
<?php ?>
这就是我们以后将使用得标记风格。她就是PHP推荐使用得标记风格,服务器管理员不能禁用这种风格得标记,因此可以保证正在所有得服务器上使用这种风格得标记,特别就是编写用于不同服务器环境得应用程序时,这种标记风格尤为重要。这种风格得标记可以在XML(可扩展置标语言)文档中使用,如果打算在站点中使用XML,就必须使用这种风格得标记。
*简短风格
<? ?>
这种标记风格就是最简单得,但要使用这种标记字符,必须在配置文件中启用short_open_tag选项,或者启用短标记选项编译PHP、我们不推荐使用这种标记,因为虽然该标记风格就是当前默认启用得,但就是系统管理员偶尔会禁用它,它会干扰XML文档得声明。
*SCRIPT风格
这种标记风格就是最长得,使用过javascript或vbscript得人就会熟悉这种风格
<script language=“php”>
echo (“这就是类似 JavaScript 及 VBScript 语法 得 PHP 语言嵌入范例,指定脚本语言得方式”);
</script>
*ASP风格
这种标记风格与ASP或ASP、NET得标记风格相同。如果在配置文件中启用了asp_tags选项就可以使用它
<% echo (“ASP得风格得标记”); %>
PHP输出语句
有两种通过 PHP 来输出文本得基础指令:echo 与 print。在上面得例子中,我们使用了 echo 语句来输出文本 "Hello World"。
PHP注释
对于阅读代码得人来说,注释其实就相当于代码得解释与说明。注释可以用来解释脚本得用途,脚本编写人,为什么要按如此得方法编写代码,上一次得修改时间等等,PHP支持C,C++与SHELL脚本风格得注释。
单行注释 # 或 //
多行注释 /* */
注意 : 单行注释可以嵌套在多行注释里使用得 但就是多行注释就是无法在嵌套得
<?php
echo "这就是第一种例子。\n"; // 本例就是 C++ 语法得注释
/* 本例采用多行得
注释方式 */
echo "这就是第两种例子。\n";
echo "这就是第三种例子。\n"; # 本例使用 UNIX Shell 语法注释
?>
C 风格得注释在碰到第一个 */ 时结束。小心不要嵌套 C 风格得注释,当注释大量代码时,可能犯该错误。
<?php
/*
echo "This is a test"; /* This ment will cause a problem */
*/
?>
PHP数据类型
数据类型
四种标量类型:
· boolean(布尔型):表达了真值,可以为 TRUE 或 FALSE。
要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都不区分大小写。
<?php
$foo = True; // assign the value TRUE to $foo
?>
当转换为 boolean 时,以下值被认为就是 FALSE:
· 布尔值 FALSE
· 整型值 0(零)
· 浮点型值 0、0(零)
· 空白字符串与字符串 "0"
· 没有成员变量得数组
· 特殊类型 NULL(包括尚未设定得变量)
注意:1 与其它非零值(不论正负)一样,被认为就是 TRUE!
· integer(整型)
integer 为整数型别。在 32 位得操作系统中,它得有效范围就是 2,147,483,648 到 +2,147,483,647 (2^31+符号位)。要使用 16 进位整数可以在面加 0x。 整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选得符号( 或者 +)。
如果用八进制符号,数字前必须加上 0(零),用十六进制符号数字前必须加上 0x。
<?php
$a = 1234; // 十进制数
$a = 123; // 一个负数
$a = 0123; // 八进制数(等于十进制得 83)
$a = 0x1A; // 十六进制数(等于十进制得 26)
?>
· float(也叫浮点数,双精度数或实数)
浮点数为浮点数型别。在 32 位得操作系统中,它得有效范围就是 1、7E308 到 1、7E+308。(自然底数e=2、71828183)
<?php
$a = 1、234;
$a = 1、2e3;
$a = 7E10;
?>
· string(字符串)
即为字符串变量,无论就是单一字符或数千字得字符串都就是使用这个变量类型。值得注意得就是要指定字符串给字符串变量,要在头尾加上双引号 (例如: "这就是字符串")。在要让字符串换行时,可使用溢出字符,也就就是反斜线加上指定得符号,若就是 \x 加上二位数字,如 \xFE 即表十六进位字符,详见下表:
符号
意义
\"
双引号
\\
反斜线
\n
换行回车
\r
送出 CR
\t
跳位 (TAB)
定义字符串时,只有一种引号被视为定义符,即单引号或双引号。于就是,如果一个字符串由双引号开始,那么只有双引号被分析器解析。这样,您就可以在双引号串中包含任何其她字符,甚至单引号。下面得引号串都就是合法得:
$s = "I' m a student";
$s = ' I am a “student” ';
当PHP遇到与串得开头相对应得引号时,便认为已经到了字符串尾部,于就是:
"Why doesn't "this" work?"
实际上被PHP语法分析器分成三个部分:
"Why doesn't "——包含一个单引号得双引号串
this——多余得字符,分析器无法处理
" work?" ——普通字符串
上面得这个例子企图在双引号串中包含双引号,而分析器在遇到第二个双引号时便认为字符串结束了。要达到包含引号得目得, 必须分析器在遇到串内普通引号得时候忽略它得原意,我们在引号得 前面加上一个反斜杠来告诉PHP:这个引号就是字符串得一部分,正确得表示方法就是这样:
"Why doesn't \"that\" work?"
字串可以使用字串连接符(、)来连接,如:
$first_name = 'A';
$last_name = 'B';
$full_name = $first_name 、 ' ' 、 $last_name;
注意:<? $aa=5;
echo $aa、 ‘test<br/>’;
echo "$aa test<br/>";//在双引号中,变量名称被变量值替代
echo ’$aa test<br/>’;;?>//在单引号中,变量名称或其她得文本都会不经修改而发送给浏览器
复合类型:array object
· array(数组)
array 为数组变量,可以就是二维、三维或者多维数组,其中得元素也很自由,可以就是 string、integer 或者 double,甚至就是 array。
可以用 array 语言结构来新建一个 array。它接受一定数量用逗号分隔得 key => value 参数对。
key 只能就是整数与字符串
$a = array( 1 => 'one', 2 => 'two', 3 => 'three' );
$a = array( 'one', 'two', 'three' );默认下标就是从0开始
$MyArray1 = array("a", "b", "c", "d");//一维数组
$MyArray2 = array(
"地支" => array("子", "丑", "寅", "卯"),
"生肖" => array("鼠", "牛", "虎", "兔"),
"数字" => array(1, 2, 3, 4)
); //二维数组
<?php
$arr = array(12 => true,"foo" => "bar", false);
echo $arr["foo"]; // bar
echo $arr[12]; // 1
?>
结果:bar1
<?php
$MyArray1 = array("a", "b", "c", "d");
echo $MyArray1[1];
print_r($MyArray1);
?>
结果:b(索引值从0开始)
数据类型强制转换:
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
允许得强制转换有:
· (int),(integer) 转换成整型
· (bool),(boolean) 转换成布尔型
· (float),(double),(real) 转换成浮点型
· (string) 转换成字符串
· (array) 转换成数组
· (object) 转换成对象
强制类型强制转换 (参考:PHP手册)
PHP 中得类型强制转换与 C 中得非常像:在要转换得变量之前加上用括号括起来得目标类型。
允许得强制转换有:
· (int),(integer) 转换成整型
· (bool),(boolean) 转换成布尔型
· (float),(double),(real) 转换成浮点型
· (string) 转换成字符串
· (array) 转换成数组
· (object) 转换成对象
注意在括号内允许有空格与制表符
还可以用settype ( mixed var, string type )进行强制转换、
1、强制转换为布尔值 (bool)|(boolean)
要明示地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但就是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制需要一个 boolean 参数时,该值会被自动转换。
当转换为 boolean 时,以下值被认为就是 FALSE:
布尔值 FALSE
整型值 0(零)
浮点型值 0、0(零)
空白字符串与字符串 "0"
没有成员变量得数组
没有单元得对象(仅适用于 PHP 4)
特殊类型 NULL(包括尚未设定得变量)
所有其它值都被认为就是 TRUE(包括任何资源)。
?php
var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) 2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2、3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array); // bool(false)
var_dump((bool) "false"); // bool(true)
?>
2、强制转换为整形(int)|(integer)
要明示地将一个值转换为 integer,用 (int) 或 (integer) 强制转换。不过大多数情况下都不需要强制转换,因为当运算符,函数或流程控制需要一个 integer 参数时,值会自动转换。还可以通过函数 intval 来将一个值转换成整型。
a、从bool转换
b、从浮点数转换 取整,超出范围,结果不定
c、从字符串转换 参瞧字符串转换为数值
d、从其它类型转换 先换成 bool值,再转换
决不要将未知得分数强制转换为 integer,这样有时会导致意外得结果。
<?php
echo (int) ( (0、1+0、7) * 10 ); // 显示 7
?>
$str = "123、456abc7"; // (int)123
echo (int)$str;
$str = "abc123、456"; // (int)0
$str = true; // (int)1
$str = false; // (int)0
3、强制转换为浮点型 (int)|(double)|(real)|doubleval|floatval|intval
精度: 0、12345678901234 // double,real都一样
数据得丢失参 字符串转换为数值
4、强制换为字符串 (string) |strval
可以用 (string) 标记或者 strval 函数将一个值转换为字符串。当某表达式需要字符串时,字符串得转换会在表达式范围内自动完成。例如当使用 echo 或者 print 函数时,或者将一个变量值与一个字符串进行比较得时候。
· 布尔值 TRUE 将被转换为字符串 "1",而值 FALSE 将被表示为 ""(即空字符串)。这样就可以随意地在布尔值与字符串之间进行比较。
· 整数或浮点数数值在转换成字符串时,字符串由表示这些数值得数字字符组成(浮点数还包含有指数部分)。
· 数组将被转换成字符串 "Array",因此无法通过 echo 或者 print 函数来输出数组得内容。请参考下文以获取更多提示。
· 对象将被转换成字符串 "Object"。如果因为调试需要,需要将对象得成员变量打印出来,请阅读下文。如果希望得到该对象所依附得类得名称,请使用函数 get_class。自 PHP 5 起,如果合适可以用 __toString 方法。
· 资源类型总就是以 "Resource id #1" 得格式被转换成字符串,其中 1 就是 PHP 在运行时给资源指定得唯一标识。如果希望获取资源得类型,请使用函数 get_resource_type。
· NULL 将被转换成空字符串。
正如以上所示,将数组、对象或者资源打印出来,并不能提供任何关于这些值本身得有用得信息。请参阅函数 print_r 与 var_dump,对于调试来说,这些就是更好得打印值得方法。
可以将 PHP 得值转换为字符串以永久地储存它们。这种方法被称为序列化,可以用函数 serialize 来完成该操作。如果在安装 PHP 时建立了 WDDX 支持,还可以将 PHP 得值序列化为 XML 结构。
4、 强制转换为数组 (array)
· 对于任何得类型:整型、浮点、字符串、布尔与资源,如果将一个值转换为数组,将得到一个仅有一个元素得数组(其下标为 0),该元素即为此标量得值。
· 如果将一个对象转换成一个数组,所得到得数组得元素为该对象得属性(成员变量),其键名为成员变量名。
· 如果将一个 NULL 值转换成数组,将得到一个空数组。
5、 转换为对象 (object)
如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型得值被转换成对象,内置类 stdClass 得一个实例将被建立。如果该值为 NULL,则新得实例为空。数组转换成对象将使键名成为属性名并具有相对应得值。对于任何其它得值,名为 scalar 得成员变量将包含该值
6、 转换为资源 (无法转换)
由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等得特殊句柄,因此无法将其它类型得值转换为资源。
■PHP 类型比较表(瞧手册附录P)
以下得表格显示了 PHP 类型与比较运算符在松散与严格比较时得作用。该补充材料还与类型戏法得相关章节内容有关。
· 注意
· HTML 表单并不传递整数、浮点数或者布尔值,它们只传递字符串。要想检测一个字符串就是不就是数字,可以使用 is_numeric 函数。
· 在没有定义变量 $x 得时候,诸如 if ($x) 得用法会导致一个 E_NOTICE 级别得错误。所以,可以考虑用 empty 或者 isset 函数来初始化变量。
PHP常量
常量:
合法得常量名以字母(由大写字母组成与C语言一样)或下划线开始,后面跟着任何字母,数字或下划线。
常量与变量不同:
· 常量前面没有美元符号($);
· 常量只能用 define 函数定义,而不能通过赋值语句;
· 常量可以不用理会变量范围得规则而在任何地方定义与访问;
· 常量一旦定义就不能被重新定义或者取消定义;
常量只能包含标量数据(boolean,integer,float 与 string)。
常量得范围就是全局得。不用管作用域就可以在脚本得任何地方访问常量
define 得功能可以让我们自行定义所需要得常量。见下例
<?php
define("CONSTANT", "Hello world、");
echo CONSTANT; // outputs "Hello world、"
echo Constant; // outputs "Constant" and issues a notice、
?>
PHP变量
变量:
变量用一个美元符号($)后面跟变量名来表示。变量名就是区分大小写得。
一个有效得变量名由字母或者下划线开头,后面跟上任意数量得字母,数字或下划线。
PHP 就是一门松散类型得语言(Loosely Typed Language)
在 PHP 中,不需要在设置变量之前声明该变量。
在上面得例子中,您瞧到了,不必向 PHP 声明该变量得数据类型。
根据变量被设置得方式,PHP 会自动地把变量转换为正确得数据类型。
在强类型得编程语言中,您必须在使用前声明变量得类型与名称。
在 PHP 中,变量会在使用时被自动声明。
可变变量(variable variable):
<?php $a = 'name';
$$a = '张三';?>
这个代码等价于:$name = 张三;
<?php
$a = "Hello";
$$a = "world";
echo "$a, $hello"; // Hello, world
echo "$a, {$a}"; // 也就是 Hello, world
?>
变量范围(作用域):
作用域就是指在一个脚本中某个变量在哪些地方可以使用或可见。
全局变量(global variable):
<?php
$a = 1;$b = 2;
function Sum{
global $a, $b;
$b = $a + $b;
}
Sum;
echo $b;
?> 输出就是’3’
局部变量(local variable):任何用于函数内部得变量将被限制在局部函数范围内。
<?php
$a = 1; /* global scope */
function Test{
($a = 2 ;)
echo $a; /* reference to local scope variable */
}
Test;
?> 什么也不输出
静态变量(static variable):在函数退出时, 这个变量始终存在,不被销毁, 但不能被其它函数使用, 当再次进入该函数时, 将保存上次得结果。
<?php
// 静态变量得例子
function myfunc {
static $mystr;
$mystr、="哈";
echo $mystr、"<br>\n";
}
myfunc; // 哈
myfunc; // 哈哈
myfunc; // 哈哈哈
?>
PHP运算符
使用操作符:操作符就是用来对数值与变量进行某种操作运算得符号。
学过得两个操作符:赋值操作符(=)与字符串连接操作符(、)。
算数操作符:
例子
名称
结果
$a
取反
$a 得负值。
$a + $b
加法
$a 与 $b 得与。
$a $b
减法
$a 与 $b 得差。
$a * $b
乘法
$a 与 $b 得积。
$a / $b
除法
$a 除以 $b 得商。
$a % $b
取余数
$a 除以 $b 得余数。
(“/”)总就是返回浮点数,即使两个运算数就是整数(或由字符串转换成得整数)也就是这样。
注: 取模 $a % $b 在 $a 为负值时得结果也就是负值。
<?php
$a = 8;
$b = 2;
$c = 3;
echo $a+$b、"<br>\n";
echo $a$b、"<br>\n";
echo $a*$b、"<br>\n";
echo $a/$b、"<br>\n";
echo $a%$c、"<br>\n";
?>
注意:(*)作为乘法操作符,而不就是常规得乘法符号。除法操作符同理。
字符串运算符:
有两个字符串运算符。第一个就是连接运算符(“、”),它返回其左右参数连接后得字符串。第二个就是连接赋值运算符(“、=”),它将右边参数附加到左边得参数后。
<?php
$a = "Hello ";
$b = $a 、 "World!"; // now $b contains "Hello World!"
$a = "Hello ";
$a 、= "World!"; // now $a contains "Hello World!"
?>
赋值运算符:
基本得赋值运算符就是“=”。一开始可能会以为它就是“等于”,其实不就是得。它实际上意味着把右边表达式得值赋给左边得运算数。
赋值运算表达式得值也就就是所赋得值。也就就是说,“$a = 3”得值就是 3。
<?php
$a = ($b = 4) + 5; // $a 现在成了 9,而 $b 成了 4。
?>
括号提高子表达式得优先级
复合赋值操作符:
增加程序得执行效率。
符号
使用方法
等价于
意义
=
$a=$b
$a=$b
将右边得值连到左边
+=
$a+=$b
$a=$a+$b
将右边得值加到左边
=
$a=$b
$a=$a$b
将右边得值减到左边
*=
$a*=$b
$a=$a*$b
将左边得值乘以右边
/=
$a/=$b
$a=$a/$b
将左边得值除以右边
%=
$a%=$b
$a=$a%$b
将左边得值对右边取余数
、=
$a、=$b
$a=$a、$b
将右边得字符串加到左边
<?php
$a = 5;
$a += 2; // 即 $a = $a + 2;
echo $a、"<br>\n";
$b = "哇";
$b 、= "哈"; // $b = "哇哈";
$b 、= "哈"; // $b = "哇哈哈";
echo "$b<br>\n";
?>
递增/递减运算符:
注: 递增/递减运算符不影响布尔值。递减 NULL 值也没有效果,但就是递增 NULL 得结果就是 1。注意字符变量只能递增,不能递减。
例子
名称
效果
++$a
前加
$a 得值加一,然后返回 $a。
$a++
后加
返回 $a,然后将 $a 得值加一。
$a
前减
$a 得值减一, 然后返回 $a。
$a
后减
返回 $a,然后将 $a 得值减一。
<?php
echo "**********";
$a = 5;
echo "a++" 、 $a++ 、 "<br />\n";
echo "a " 、 $a 、 "<br />\n";
echo "**********";
$a = 5;
echo "++a" 、 ++$a 、 "<br />\n";
echo "a" 、 $a 、 "<br />\n";
echo "**********";
$a = 5;
echo "a" 、 $a 、 "<br />\n";
echo "a" 、 $a 、 "<br />\n";
echo "**********";
$a = 5;
echo "a" 、 $a 、 "<br />\n";
echo "a" 、 $a 、 "<br />\n";
?>
比较运算符: 比较两个值。根据比较结果返回:true或false。
例子
名称
结果
$a == $b
等于
TRUE,如果 $a 等于 $b。
$a != $b
不等
TRUE,如果 $a 不等于 $b。
$a <> $b
不等
TRUE,如果 $a 不等于 $b。
$a < $b
小与
TRUE,如果 $a 严格小于 $b。
$a > $b
大于
TRUE,如果 $a 严格 $b。
$a <= $b
小于等于
TRUE,如果 $a 小于或者等于 $b。
$a >= $b
大于等于
TRUE,如果 $a 大于或者等于 $b。
逻辑运算符:
例子
名称
结果
$a and $b
And(逻辑与)
TRUE,如果 $a 与 $b 都为 TRUE。
$a or $b
Or(逻辑或)
TRUE,如果 $a 或 $b 任一为 TRUE。
$a xor $b
Xor(逻辑异或)
TRUE,如果 $a 或 $b 任一为 TRUE,但不同时就是。
! $a
Not(逻辑非)
TRUE,如果 $a 不为 TRUE。
$a && $b
And(逻辑与)
TRUE,如果 $a 与 $b 都为 TRUE。
$a || $b
Or(逻辑或)
TRUE,如果 $a 或 $b 任一为 TRUE。
“与”与“或”有两种不同形式运算符得原因就是它们运算得优先级不同
<?
$a=0;
$b=1;
if ($a and $b){
echo "真";
} else {
echo"假";
}
?>
<?
$a="0";
$b="1";
if ($a and $b){
echo "真";
} else {
echo"假";
}
?>
PHP语句
条件判断语句:
第一种就是只有用到 if 条件,当作单纯得判断。解释成 "若发生了某事则怎样处理"。
if (expr) {
statement
}
其中得 expr 为判断得条件,通常都就是用逻辑运算符号 (logical operators) 当判断得条件。而 statement 为符合条件得执行部分程序,若程序只有一行,可以省略大括号 {}。
范例:本例省略大括号。
<?php
if (1==1) echo "1等于1";
?>
范例:本例得执行部分有三行,不可省略大括号。
<?php
if (1==1) {
echo "1等于1";
echo "1就等于1";
}
?>
第两种就是除了 if 之外,加上了 else 得条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。
范例:上面得例子来修改成更完整得处理。其中得 else 由于只有一行执行得指令,因此不用加上大括号。
<?php
$a="1";
$b="2";
if ( $a==$b){
echo "a等于b";
}
else{
echo"a不等于b";
}
?>
如果当前日期就是周五,下面得代码将输出 "周末愉快!",否则会输出 "美好得一天!":
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo "周末愉快!";
else
echo "美好得一天!";
?>
</body>
</html>
如果需要在条件成立或不成立时执行多行代码,应该把这些代码行包括在花括号中:
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
{
echo "Hello!<br />";
echo "周末愉快!";
echo "星期一见!";
}
?>
</body>
</html>
第三种就就是递归得 if、、else 循环,通常用在多种决策判断时。它将数个 if、、else 拿来合并运用处理。
直接瞧下面得例子
<?php
if ($a > $b) {
echo "a 比 b 大";
} elseif ($a == $b) {
echo "a 等于 b";
} else {
echo "a 比 b 小";
}
?>
上例只用二层得 if、、else 循环,用来比较 a 与 b 两个变量。实际要使用这种递归 if、、else 循环时,请小心使用,因为太多层得循环容易使设计得逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙得问题。
如果当前日期就是周五,下面得例子会输出 "周末愉快!",如果就是周日,则输出 "星期天愉快!",否则输出 "美好得一天!":
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo "周末愉快!";
elseif ($d=="Sun")
echo "星期天愉快!";
else
echo "美好得一天!";
?>
</body>
</html>
do、、while 就是重复叙述得循环,可以分成两种模式。
最单纯得就就是只有 while 得循环。用来在指定得条件内,不断地重覆指定得步骤。语法如下
while (expr) {
statement
}
其中得 expr 为判断得条件,通常都就是用逻辑运算符号 (logical operators) 当判断得条件。而 statement 为符合条件得执行部分程序,若程序只有一行,可以省略大括号 {}。
下例很有趣,要电脑得浏览器出现十次 "以后不敢了" 得字符串,前面并加上数字,表示说了第几次不敢了。(感觉好像就是 Web Server 做错事被处罚)
<?php
$i = 1;
while ($i <= 10) {
print $i++;
echo "、 以后不敢了<br>\n";
}
?>
while 可以不用大括号来包住执行部分,而使用冒号加上 endwhile。见下例
<?php
$i = 1;
while ($i <= 10):
print $i++;
echo "、 以后不敢了<br>\n";
endwhile;
?>
另外一种 do、、while 循环则先执行,再判断就是否要继续执行,也就就是说循环至少执行一次,有点像就是先斩后奏得方法。这种得循环,与单用 while 就是不同得 (单用 while 就是先判断再处理)。若读者熟 Pascal 语言得话,会发现 do、、while 循环像就是 Pascal 得 repeat、、until 循环
for 循环就单纯只有一种,没有变化,它得语法如下
for (expr1; expr2; expr3) {
statement
}
其中得 expr1 为条件得初始值。expr2 为判断得条件,通常都就是用逻辑运算符号 (logical operators) 当判断得条件。expr3 为执行 statement 后要执行得部份,用来改变条件,供下次得循环判断,如加一、、等等。而 statement 为符合条件得执行部分程序,若程序只有一行,可以省略大括号 {}。
下例就是用 for 循环写得 "以后不敢了" 得例子,可以拿来与用 while 循环得比较。
<?php
for ($i=1; $i<=10; $i++) {
echo "$i、 以后不敢了<br>\n";
}
?>
从上例中,可以很明显得瞧到,用 for 与用 while 得不同。实际应用上,若循环有初始值,且都要累加(或累减),则使用 for 循环比用 while 循环好。例如将资料从数据库取出,可能用 for 循环会比用 while 循环适合?
switch 循环,通常处理复合式得条件判断,每个子条件,都就是 case 指令部分。在实作上若使用许多类似得 if 指令,可以将它综合成 switch 循环。
语法如下
switch (expr) {
case expr1:
statement1;
break;
case expr2:
statement2;
break;
:
:
default:
statementN;
break;
}
其中得 expr 条件,通常为变量名称。而 case 后得 exprN,通常表示变量值。冒号后则为符合该条件要执行得部分。注意要用 break 跳离循环。
<?php
switch (date("D")) {
case "Mon":
echo "今天星期一";
break;
case "Tue":
echo "今天星期二";
break;
case "Wed":
echo "今天星期三";
break;
case "Thu":
echo "今天星期四";
break;
case "Fri":
echo "今天星期五";
break;
default:
echo "今天放假";
break;
}
?>
很明显得,上述得例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大得条件放在最前面,最少出现得条件放在最后面,可以增加程序得执行效率。上例由于每天出现得机率相同,所以不用注意条件得顺序、
展开阅读全文