中文
任何PHP脚本语言都是使用连续的语句创建的。一个语句可以是一个赋值语句,一个函数调用,一个循环,一个条件语句甚至一个不做任何事情的语句(一个空的语句)。语句经常使用分号(;)结尾。另外,利用卷支持可以把一组语句压缩从而使语句可以被组成语句组。一个语句组是一个关于自身的申明。不同的语句类型将在本章被描述。
常量
PHP定义了一些常量提供给结构使它能够在运行时定义更多的类型。常量和变量十分的类似,但是他们在语法上有些微的不同。
被预定义的常量是__FILE__ 和__LINE__,在处理他们时,会发现他们与文件名和行号相符合。请参考如下示例:
Example 6-1. Using __FILE__ and __LINE__ //使用__FILE__ 和__LINE__
function report_error($file, $line, $message) {
echo "An error occured in $file on line $line: $message.";
}
report_error(__FILE__,__LINE__, "Something went wrong!");
?>
您可以使用函数define() 和undefine()来定义其它的常量。
Example 6-2. Defining Constants //定义常量
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
undefine ("CONSTANT");
?>
表达式
表达式是PHP最重要的基石。在PHP中,您所写的几乎所有的内容都是表达式。最简单同时也是最精确的定义一个表达式的方法是“任何内容都有它的值”。
立刻进入大脑的简单例子是:常量和变量。当您输入“$a = 5”,您就把值“5”赋给了变量“$a”,明显的,获得这个数值5,或者说’5’是一个值为5的表达式(在这个例子中,’5’是一个整数常量)。
赋值以后$a的值是5, 因此如果你这样写$b = $a,你它同$b = 5所表达的意思是一样的.换句话说,$a是一个值为5的表达式.如果一切工作正常,这些将是所发生的一切.
再稍微复杂一点的表达式的例子是函数(function) .例如,考虑以下下面的函数:
function foo () {
return 5;
}
假设你熟悉函数的概念(如果你不熟悉,看一下第四章),你可能假设$c=foo()从本质上说同$c=5是一致的,你是正确的.函数是以他们的返回值为值得表达式.既然foo()返回5,表达式’foo()’的值就是5。一般来说,函数不会仅仅返回一个态的值,他们一般都计算一些东西。
当然,PHP里面的值不必须是整数,并且经常他们不是PHP支持三种标量类型的数值:整数,浮点数,和字符串。(标量值是不能被再分为更小部分的数值,例如它不能是数组)。php也支持两种合成类型的数值:数组和对象。每一种数据类型都能被赋值给变量或者通过函数返回。
迄今为止,PHP/FI 2的用户不应该感觉到任何改变。然而,PHP把表达式带入了一个更深的层次,如同许多其它语言所作的一样。PHP是一种面向表达式的语言,几乎每一件事都是一个表达式.考虑一下我们已经处理过的表达式“$a=5”.可以非常容易的看出这里包含了两个值,常量’5’的值,和$a的值。$a的值也已经被更新成5。但是事实是这里还有一个额外的值包含其中,并且这个值就是赋值语句本身.这个赋值语句本身计算所赋值的数值,在这个例子中是5。实际上,它意味着“$a=5”,不管他做什么,是一个值为5的表达式。因此,一些像’$b=($a=5)’的表达式,实际上同’$a=5;$b=5’(分号代表表达式的结束)是一样的.既然赋值语句被以从右到左的顺序解析,你还可以这样写’$b=$a=5’。
另一个很好的表达式的例子是前和后递增量的方向性.PHP/FI 2的用户和许多其他语言的用户也许对符号(variable(变量)++和variable--)非常熟悉.这些就是递增和递减符号.在PHP/FI 2中,语句’$a++’没有任何值(不是一个表达式),并且因此你不能给它赋值或以任何方式来使用它.PHP通过发展这些表达式加强了递增(increment)/递减(decrement)的能力,像c语言中一样.在PHP中,有两种递增形式-前递增和后递增.这两种递增本质上都是使变量加1,并且对变量的影响都是一样的.他们的区别是递增表达式本身的值.前递增的形式是’++$variable(变量)’,计算递增值(PHP 在读出它的值之前递增变量的值,因此叫前递增)后递增的形式是’$variable++’,在变量递增前计算$variable的原始值(PHP先读出变量的值,然后再递增,因此叫后递增).
表达式的最后一个例子我们将处理组合操作符赋值表达式.你已经知道了如果你想将变量$a的值加1,你可以简单的写成’$a++’或’++$a’.但是如果你想加的数值不只是1呢,例如3?你可以多次使用’$a++’,但是很明显这样不是一个有效的,简洁的方式.通常的方法是这样写’$a=$a+3’. ’$a=$a+3’计算变量$a加3后的值,并且被重新赋值给了变量$a,最终的结果是变量$a的值加了3.在PHP中,如同像C一样的其它一些语言,你可以用更简短的方式来做这些.给变量$a的当前值加3可以写’$a+=3’.这个表达式正确的意思是”读出$a的值,加3,然后把它赋值给$a”.除了更加简洁和简略外,这样的语句执行起来速度更快.表达式’$a+=3’的值,像一个正则赋值语句的值.是被赋予的值.注意它不是3,而是$a+3的组合的值(这是一个被赋给$a的值).任何二元操作符都可以被用来组合成复合赋值操作符.例如,’$a-=5’($a=$a-5),’$b*=7’($b乘以7),等等.
如果你没有在其它语言中加过的话,你会认为下面的表达式看起来非常奇怪.这就是三元条件算子:
$first ? $second : $third
如果第一个子表达式的值为真的话(非0),那么他的第二个子表达式将被计算,并且这就是整个条件表达式的值.否则,第三个子表达式将被预算,结果作为整个条件表达式的值.
下面的例子可以帮助你大体上理解前,后递增和表达式.
function double($i) { return $i*2;}
$b = $a = 5; /* 把5赋值$a和$b */
$c = $a++; /* 后递增, 把$a的原始值(5)赋值给$c */
$e = $d = ++$b; /* 前递增, 把经过递增操作的$b的值(6)赋值给$e和$d */
/* 这时,$d和$e都等于(6) */
$f = double($d++); /* 把$d的原始值(6)加倍,然后赋值给$f.$f等于(12)*/
$g = double(++$e); /* 先把$e执行递增操作,然后加倍, 2*7 = 14赋值给$g*/
$h = $g += 10; /* 首先,$g加10,并且最终结果是24.将这个值赋值给$h,并且$h最终的结果也是24.*/
在本章的一开始,我们就说过”我们将描述各种类型的语句”.表达式可以成为语句,然而,并不是每一个表达式都是一个语句.既然这样,一个语句具有’expr’’;’的形式,一个表达式加上一个分号.在’$b=$a=5;’中,$a=5是一个有效的表达式,但是他不能由他自己构成一个语句.但是’$b=$a=5;’却是一个有效的语句.
最后一个值得提起的事情是一个表达式的值的真假.在很多事件中,主要在条件执行和循环中,你对表达式的确切的值并不感兴趣,你仅仅对他是否以为着 TRUE(真)或FALSE(假)(PHP没有专门的boolean类型).在PHP中计算表达式的真假的方式同perl非常相似.任何非零的数值都是TRUE,零是FALSE!注意负数也非零,所以也为真!空字符串和字符’0’为FALSE;所有其他字符串为TRUE.对于非标量的数值(数组或对象)-如果值没有包含任何元素,则被认为为FALSE,否则为TRUE.
PHP提供了一个完整而且强大的表达式工具,并且完全说明他已经超出了本手册的范围.关于表达式是什么,你怎么才能构造一个有效的表达市,上面的例子应该给了你一个很好的提示.贯穿这个手册的其余部分,我们将用’expr’代表有效的PHP表达式.
IF
IF结构是任何语言中最重要的特性之一,PHP也包括了它。它允许进行条件判断同时执行相应的程序段。PHP中IF语句的特性和C是十分类似的:
if (expr)
statement
在对该表达式片段的描述后,会判断表达式的值是否为真。如果表达式的值为真,PHP会执行该语句,如果该值为假,那么PHP将会跳过该语句。
接下来的例子中如果$a比$b大,那么将显示“a is bigger than b”。
if ($a > $b)
print "a is bigger than b";
通常的情况,是用户希望使用不只一条语句被有条件的执行。当然,在这里没有必要对每一个语句使用IF条件判断。用户可以使用一组语句来实现这个功能。例如,如果$a比$b大,那么下面的代码将显示“a is bigger than b”,同时将$a的值赋给$b。
if ($a > $b) {
print "a is bigger than b";
$b = $a;
}
IF语句可以嵌套在另一个IF语句之中,利用这一点,用户可以根据不同的情况执行程序中不同的部分。
ELSE
通常,可能在条件符合时希望运行某个语句,而在条件不符合时希望运行另一段程序。这就是ELSE语句的作用。ELSE扩展了IF语句的作用,当条件为假时,ELSE后面的语句将被执行。例如,接下来的程序段将在$a大于$b的时候显示“a is bigger than b”,在其他的情况下显示“a is NOT bigger than b”。
if ($a > $b) {
print "a is bigger than b";
} else {
print "a is NOT bigger than b";
}
ELSE语句并不仅仅起到在IF表达式值为假的时候执行语句的作用,如果在它后面接上IF的话,就成为了ELSEIF语句,使用它可以进一步的分析假的情况(见下文)。
ELSEIF
正如它的名字所暗示的,ELSEIF是IF和ELSE的组合。和ELSE一样它扩展了IF语句对FALSE(假)的处理。但是和ELSE不一样的是,ELSEIF将已经为假的条件再进行一次判断,并根据判断的结果进行处理。例如,下列代码在$a>$b的情况下将显示“a is bigger than b”,当$a不大于$b的时候就再进行一次判断,如果$a==$b,将显示“a is equal to b”,如果$a
if ($a > $b) {
print "a is bigger than b";
} elseif ($a == $b) {
print "a is equal to b";
} else {
print "a is smaller than b";
}
在同一个IF语句中可以有多个ELSEIF语句。第一个ELSEIF表达式(if any)如果为真,那么将被执行。在PHP3中,您也可以写成“else if”(使用两个词)同时效果和使用“elseif”(一个词)是一样的。他们的语言仅仅有些微的不一样(如果您熟悉C语言的话,您会发现这个不一样和在C中类似)但是最终他们的结果是完全一样的。
ELSEIF语句仅仅在IF语句或前一个ELSEIF的表达式为假,同时当前的ELSEIF语句表达式为真的情况下执行。
IF语句的交互语法:IF().. ..ENDIF
PHP3提供了一种不同的方法在IF语句中建立语句组。这种方式在您将HTML嵌套进IF语句中非常常见,但是您可以将着种方法应用到任何位置。除了使用{}之外,IF表达式可以跟随一个冒号,一个或多个语句,然后使用ENDIF结尾;请注意如下的例子:
A = 5
在上面所示的例子中,利用交互语法,HTML语句“A = 5”被嵌套进了IF语句之中。这个HTML语句会在$a为5的时候被显示。
这种交互语法也可以应用在ELSE和ELSEIF语句之中。接下来的例子是使用交互格式的IF、ELSEIF和ELSE语句。
if ($a == 5):
print "a equals 5";
print "...";
elseif ($a == 6):
print "a equals 6";
print "!!!";
else:
print "a is neither 5 nor 6";
endif;
WHILE
WHILE循环是PHP3中循环的一个简单例子。它和在C中的表现完全一样,WHILE语句基本的结构如下所示:
WHILE(expr) statement
WHILE语句的的含义是十分简单的。它告诉PHP在WHILE表达式为真的情况下反复的执行嵌套的语句。表达式的值在每一次循环开始的时候被检查,所以即使这个值在执行嵌套的语句时被更改了,执行过程将不会被终止,直到结束该次循环为止。有些情况下,WHILE表达式的值在开始就是假,那么这些嵌套的语句将一次也不会被执行。
和使用IF语句类似,您可以在同一个WHILE循环中使用多个语句作为一个组,使用{ }或类似于下文的语法:
WHILE(expr): statement ... ENDWHILE;
在下面的两个例子实现的功能是相同的,即打印了从1到10的所有数字:
/* example 1 */
$i = 1;while ($i
print $i++; /* the printed value would be
$i before the increment
(post-increment) */
}
/*example 2 */
$i = 1;
while ($i
print $i;
$i++;
endwhile;
DO..WHILE
DO..WHILE循环和WHILE循环是十分类似的,除了真值检查是在每个循环过程最后进行的外。这里最主要的不同就是对于DO..WHILE循环,它和标准的WHILE循环不一样,它的第一个循环过程总是会被执行的(由于真值检查是在最后被执行的)。标准的WHILE循环中的第一个语句不一定被执行(由于真值检查是在循环开始时进行的)。
这儿是使用DO..WHILE循环语句的一个例子:
$i = 0;
do {
print $i;
} while ($i>0);
上文的循环仅仅会被执行一次,在第一次循环执行完毕之后,检查表达式为假($I并不比0大)此时循环就会被终止。
高级的C语言使用者对使用DO..WHILE循环的不同之处会有很深的理解,为了允许在代码段的执行过程中终止执行,可以使用将他们加入DO..WHILE(0)语句中,再使用BREAK语句的方法。下面代码段说明了这一点:
do {
if ($i
print "i is not big enough";
break;
}
$i *= $factor;
if ($i
break;
}
print "i is ok";
...process i...
} while(0);
如果您对这些都不是很明白的话,也不必担心。您可以在不使用这些特性的情况下编写出很强有力的代码。
FOR
在PHP中FOR循环是最复杂的循环。它的特性和它在C语言中的表现类似。FOR循环的语法如下:
FOR (expr1; expr2; expr3) statement
第一个表达式expr1将在循环开始时无条件的被求解执行;
在每一个循环开始的时候,第二个表达式将被执行。如果它的值为真,则该循环将继续下面嵌套语句的执行。如果它的值为假,则循环结束;
在每个循环的最后第三个表达式将被执行。
任何一个表达式都可以是空的,当表达式二(expr2)是空的时候,意味这这个循环运行的次数将是不确定的(PHP和C一样默认该表达式为真)。这种做法并不象您想象的那样没有用,因为在有些情况下您可能希望使用带条件的BREAK语句来取代FOR的真值判断来作为终止循环的方法。
注意下面的几个例子,所有的这些语句显示了从1到10的数字:
/* example 1 */
for ($i = 1; $i
print $i;
}
/* example 2 */
for ($i = 1;;$i++) {
if ($i > 10) {
break;
}
print $i;
}
/* example 3 */
$i = 1;for (;;) {
if ($i > 10)
{ break;
}
print $i;
$i++;
}
/* example 4 */
for ($i = 1; $i
当然,看上去第一个例子最好(或者是第四个例子),但是您将发现在许多场合使用空表达式的FOR循环是十分方便的。
在FOR循环中PHP也支持交互的“冒号语法”。例如:
FOR (expr1; expr2; expr3): statement; ...; endfor;
其他有FOR语句的语言往往使用该语句来处理数组。在PHP中使用WHILE语句和list()和each()函数来做这件事情。请参考这些函数相关的例子。
BREAK
BREAD 跳出当前的循环体,提前结束循环.
$i = 0;
while ($i
if ($arr[$i] == "stop") {
break;
}
$i++;
}
CONTINUE
CONTINUE结束本次循环,跳到循环体的开始处,接着进行下一次循环的判定.
while (list($key,$value) = each($arr)) {
if ($key % 2) { // skip even members
continue;
}
do_something_odd ($value);
}
SWITCH
在实际问题中常常需要用到多分支的选择.你可以使用多重嵌套的IF语句来处理,但如果分支较多,则嵌套的IF语句层数多,程序冗长而且可读性降低.PHP中提供SWITCH语句来直接处理多分支选择.
下面的两个例子使通过两种不同的方式来实现同一件事,一个使用了一系列的IF语句,另外一个使用了SWITCH语句:
/* example 1 */
if ($i == 0) {
print "i equals 0";
}
if ($i == 1) {
print "i equals 1";
}
if ($i == 2) {
print "i equals 2";
}
/* example 2 */
switch ($i) {
case 0:
print "i equals 0";
break;
case 1:
print "i equals 1";
break;
case 2:
print "i equals 2";
break;
}

“你的组织要求你更改PIN消息”将显示在登录屏幕上。当在使用基于组织的帐户设置的电脑上达到PIN过期限制时,就会发生这种情况,在该电脑上,他们可以控制个人设备。但是,如果您使用个人帐户设置了Windows,则理想情况下不应显示错误消息。虽然情况并非总是如此。大多数遇到错误的用户使用个人帐户报告。为什么我的组织要求我在Windows11上更改我的PIN?可能是您的帐户与组织相关联,您的主要方法应该是验证这一点。联系域管理员会有所帮助!此外,配置错误的本地策略设置或不正确的注册表项也可能导致错误。即

Windows11将清新优雅的设计带到了最前沿;现代界面允许您个性化和更改最精细的细节,例如窗口边框。在本指南中,我们将讨论分步说明,以帮助您在Windows操作系统中创建反映您的风格的环境。如何更改窗口边框设置?按+打开“设置”应用。WindowsI转到个性化,然后单击颜色设置。颜色更改窗口边框设置窗口11“宽度=”643“高度=”500“>找到在标题栏和窗口边框上显示强调色选项,然后切换它旁边的开关。若要在“开始”菜单和任务栏上显示主题色,请打开“在开始”菜单和任务栏上显示主题

默认情况下,Windows11上的标题栏颜色取决于您选择的深色/浅色主题。但是,您可以将其更改为所需的任何颜色。在本指南中,我们将讨论三种方法的分步说明,以更改它并个性化您的桌面体验,使其具有视觉吸引力。是否可以更改活动和非活动窗口的标题栏颜色?是的,您可以使用“设置”应用更改活动窗口的标题栏颜色,也可以使用注册表编辑器更改非活动窗口的标题栏颜色。若要了解这些步骤,请转到下一部分。如何在Windows11中更改标题栏的颜色?1.使用“设置”应用按+打开设置窗口。WindowsI前往“个性化”,然

您是否在Windows安装程序页面上看到“出现问题”以及“OOBELANGUAGE”语句?Windows的安装有时会因此类错误而停止。OOBE表示开箱即用的体验。正如错误提示所表示的那样,这是与OOBE语言选择相关的问题。没有什么可担心的,你可以通过OOBE屏幕本身的漂亮注册表编辑来解决这个问题。快速修复–1.单击OOBE应用底部的“重试”按钮。这将继续进行该过程,而不会再打嗝。2.使用电源按钮强制关闭系统。系统重新启动后,OOBE应继续。3.断开系统与互联网的连接。在脱机模式下完成OOBE的所

任务栏缩略图可能很有趣,但它们也可能分散注意力或烦人。考虑到您将鼠标悬停在该区域的频率,您可能无意中关闭了重要窗口几次。另一个缺点是它使用更多的系统资源,因此,如果您一直在寻找一种提高资源效率的方法,我们将向您展示如何禁用它。不过,如果您的硬件规格可以处理它并且您喜欢预览版,则可以启用它。如何在Windows11中启用任务栏缩略图预览?1.使用“设置”应用点击键并单击设置。Windows单击系统,然后选择关于。点击高级系统设置。导航到“高级”选项卡,然后选择“性能”下的“设置”。在“视觉效果”选

在Windows11上的显示缩放方面,我们都有不同的偏好。有些人喜欢大图标,有些人喜欢小图标。但是,我们都同意拥有正确的缩放比例很重要。字体缩放不良或图像过度缩放可能是工作时真正的生产力杀手,因此您需要知道如何对其进行自定义以充分利用系统功能。自定义缩放的优点:对于难以阅读屏幕上的文本的人来说,这是一个有用的功能。它可以帮助您一次在屏幕上查看更多内容。您可以创建仅适用于某些监视器和应用程序的自定义扩展配置文件。可以帮助提高低端硬件的性能。它使您可以更好地控制屏幕上的内容。如何在Windows11

屏幕亮度是使用现代计算设备不可或缺的一部分,尤其是当您长时间注视屏幕时。它可以帮助您减轻眼睛疲劳,提高易读性,并轻松有效地查看内容。但是,根据您的设置,有时很难管理亮度,尤其是在具有新UI更改的Windows11上。如果您在调整亮度时遇到问题,以下是在Windows11上管理亮度的所有方法。如何在Windows11上更改亮度[10种方式解释]单显示器用户可以使用以下方法在Windows11上调整亮度。这包括使用单个显示器的台式机系统以及笔记本电脑。让我们开始吧。方法1:使用操作中心操作中心是访问

在iOS17中,Apple为其移动操作系统引入了几项新的隐私和安全功能,其中之一是能够要求对Safari中的隐私浏览选项卡进行二次身份验证。以下是它的工作原理以及如何将其关闭。在运行iOS17或iPadOS17的iPhone或iPad上,如果您在Safari浏览器中打开了任何“无痕浏览”标签页,然后退出会话或App,Apple的浏览器现在需要面容ID/触控ID认证或密码才能再次访问它们。换句话说,如果有人在解锁您的iPhone或iPad时拿到了它,他们仍然无法在不知道您的密码的情况下查看您的隐私


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
