|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
PHP成功的插入,删除,更新数据的时候,显然,你已经距离成功指日可待了。中文 任何PHP剧本言语都是利用一连的语句创立的。一个语句可所以一个赋值语句,一个函数挪用,一个轮回,一个前提语句乃至一个不做任何工作的语句(一个空的语句)。语句常常利用分号(;)开头。别的,使用卷撑持可以把一组语句紧缩从而使语句可以被构成语句组。一个语句组是一个关于本身的声名。分歧的语句类型将在本章被描写。
常量
PHP界说了一些常量供应给布局使它可以在运转时界说更多的类型。常量和变量非常的相似,然而他们在语法上有些微的分歧。
被预界说的常量是__FILE__ 和__LINE__,在处置他们时,会发明他们与文件名和行号符合合。请参考以下示例:
Example 6-1. Using __FILE__ and __LINE__ //利用__FILE__ 和__LINE__
<?php
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 //界说常量
<?php
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<$b将显示“a is smaller than b”。
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开头;请注重以下的例子:
<?php if ($a==5): ?>
A = 5
<?php endif; ?>
在下面所示的例子中,使用交互语法,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 <= 10) {
print $i++; /* the printed value would be
$i before the increment
(post-increment) */
}
/*example 2 */
$i = 1;
while ($i <= 10):
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 < 5) {
print "i is not big enough";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
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 <= 10; $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 <= 10; print $i, $i++) ;
固然,看上去第一个例子最好(或是第四个例子),然而您将发明在很多场所利用空表达式的FOR轮回是非常便利的。
在FOR轮回中PHP也撑持交互的“冒号语法”。例如:
FOR (expr1; expr2; expr3): statement; ...; endfor;
其他有FOR语句的言语常常利用该语句来处置数组。在PHP中利用WHILE语句和list()和each()函数来做这件工作。请参考这些函数相干的例子。
BREAK
BREAD 跳出以后的轮回体,提早停止轮回.
$i = 0;
while ($i < 10) {
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;
}
学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后... |
|