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 comment 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.7E-308 到 1.7E+308。(自然底数e=2.71828183)
<?php
$a = 1.234;
$a = 1.2e3;
$a = 7E-10;
?>
- 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变量
<strong>变量:</strong>
变量用一个美元符号($)后面跟变量名来表示。变量名是区分大小写的。
一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字或下划线。
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’
<strong>局部变量(</strong>
local variable<strong>)</strong>:
任何用于函数内部的变量将被限制在局部函数范围内。
<?php
$a = 1; /* global scope */
function Test(){
($a = 2 ;)
echo $a; /* reference to local scope variable */
}
Test();
?> 什么也不输出
<strong>静态变量(</strong>
static variable<strong>)</strong>:
在函数退出时, 这个变量始终存在,不被销毁, 但不能被其它函数使用, 当再次进入该函数时, 将保存上次的结果。
<?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 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序.
搞个代码高亮它不香嘛
mmp我第一被你占了
有的搞了,有的搞不了,有的搞了之后显示不全,为了显示全部代码,有的就没有搞。
Thank you for sharing your knowledge; it helps us develop better versions of ourselves.
I find your voice real and easy to relate to; it resonates strongly with me.