PHP快速入門之運(yùn)算符和流程控制

2.1 案例介紹

萬年歷的實(shí)現(xiàn)。萬年歷是可以按照相應(yīng)的規(guī)則來顯示每一天的屬性醒串,為我們生活提供服務(wù)的一種工具执桌。



2.2 分析案例

通過對年月日的判斷,大量的應(yīng)用了表達(dá)式及運(yùn)算符芜赌,使用了if,switch做分支判斷仰挣。運(yùn)用循環(huán)輸出,包括了所有本章所學(xué)內(nèi)容缠沈。

2.3 核心知識

運(yùn)算符

流程控制語句

2.4 知識講解

2.4.1運(yùn)算符

運(yùn)算符是用來對數(shù)值和變量進(jìn)行某種操作運(yùn)算的符號膘壶。一般地說,運(yùn)算符可以帶1個博烂、2個和3個運(yùn)算對象香椎。他們之間也有先后順序漱竖,具體如下:

—— 算術(shù)運(yùn)算符

—— 遞增/遞減運(yùn)算符

—— 比較運(yùn)算符

—— 邏輯運(yùn)算符

—— 位運(yùn)算符

—— 其他運(yùn)算符

1. 算術(shù)運(yùn)算符

運(yùn)算符 名稱 結(jié)果

$a + $b 加法 $a 和$b 的和

$a - $b 減法 $a 和$b 的差

$a * $b 乘法 $a 和$b 的積

$a / $b 除法 $a 除以$b 的商

$a % $b 取模 $a 除以$b 的余?

2. 遞增/遞減運(yùn)算符

運(yùn)算符 名稱 結(jié)果

++$a   前加   $a 的值加一禽篱,然后進(jìn)行操作

$a++ ? 后加   $a 的值先進(jìn)行操作,后加一

--$a   前減   $a 的值減一馍惹,然后進(jìn)行操作

$a--   ? 后減   $a 的值先進(jìn)行操作躺率,后減一

實(shí)例:

<?php

echo ?$a=5+”5th”; //輸出:10

echo ?10%3; //輸出:1

echo ?10+ $a++; //輸出:20

echo ?5- --$a; //輸出:-5

?>

3. 比較運(yùn)算符

運(yùn)算符 名稱 ??? 結(jié)果?

$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嚴(yán)格小于$b

$a > $b ????大于 ?? TRUE遇西,如果$a嚴(yán)格大于$b

$a <= $b ?? 小于等于 TRUE疟丙,如果$a 小于或等于$b

$a >= $b ?? 大于等于 TRUE赁项,如果$a 大于或等于$b

實(shí)例:

<?php

var_dump(0=="a"); //輸出:bool(true)

var_dump(0=="00"); //輸出:bool(true)

var_dump(0==="00"); ?//輸出:bool(false)

var_dump(0<>"abc"); //輸出:bool(false)

var_dump(0!=="01"); //輸出:bool(true)

$a=10;

$b=20;

$str=$a>$b? "true":"false";

echo $str; //輸出:false

$username=isset($_GET[“username"])?$_GET[“username"]:"";

?>

4. 邏輯運(yùn)算符

運(yùn)算符 名稱 結(jié)果

$a and $b 邏輯與 TRUE返帕,如果?$a 與?$b 都為?TRUE

$a or $b 邏輯或 TRUE降铸,如果?$a 或?$b 任一為TRUE

$a xor $b 異或 ???TRUE锰悼,如果?$a 和?$b 不同時為?TRUE

! $a 邏輯非 TRUE谢鹊,如果?$a 不為?TRUE

$a && $b ???邏輯與 TRUE镜硕,如果?$a 與?$b 都為TRUE

$a || $b ?? 邏輯或 TRUE闻妓,如果?$a 或?$b 任一為TRUE

其中and與&& 、or與||是同一邏輯運(yùn)算符的兩種寫法渗常。?

邏輯與和邏輯或都是短路運(yùn)算符壮不。在遇到下列邏輯表達(dá)式時,PHP解釋程序?qū)⒉粫嬎阌疫叺谋磉_(dá)式:

& ?&&

<?php

$a=10;

if(false && (++$a));

echo $a; //輸出:10

$b=10;

if(true or (++$b));

echo $b; //輸出:10

?>

5. 位運(yùn)算符

位運(yùn)算符允許對整型數(shù)中指定的位進(jìn)行置位皱碘。如果左右參數(shù)都是字符串忆畅,則位運(yùn)算符將操作字符的ASCII值。

表達(dá)式 ? 名稱 結(jié)果

$a & $b ? 按位與? 將把?$a 和?$b 中都為?1 的位設(shè)為?1尸执。

$a | $b ? 按位或 將把?$a 或者?$b 中為?1 的位設(shè)為?1家凯。

$a ^ $b ? 按位異或 將把?$a 和?$b 中不同的位設(shè)為?1。

~ $a ? 按位非 將?$a 中為?0 的位設(shè)為?1如失,反之亦然绊诲。

$a << $b ? 左移 將?$a 中的位向左移動?$b 次(每一次移動都表示“乘以?2”)。

$a >> $b ? 右移 將?$a 中的位向右移動?$b 次(每一次移動都表示“除以?2”)褪贵。

6. 其他運(yùn)算符

字符串運(yùn)算符

有兩個字符串運(yùn)算符掂之。第一個是連接運(yùn)算符(“. “ ),它返回其左右參數(shù)連接后的字符串脆丁。第二個是連接賦值運(yùn)算符(“.= “ )世舰,它將右邊參數(shù)附加到左邊的參數(shù)后。

錯誤抑制操作符

在最常見的數(shù)據(jù)庫連接與文件創(chuàng)建操作或出現(xiàn)除0等異常時槽卫,可以用@符號來抑制函數(shù)錯誤信息輸出到瀏覽器端 $a=@(5/0)

實(shí)例:

<?php

$a="hello";

$a.=" world! "; ? //等同于:$a=$a." world!";

echo $a; //輸出:hello world! ?

$m = 3;$m += 5; //等同于:$m=$m+5;

echo $m; //輸出:8

$c = ($b = 4) + 5;

echo $c; //輸出:9

?>

2.4.2控制流程

順序結(jié)構(gòu)

分支結(jié)構(gòu)(選擇結(jié)構(gòu))

循環(huán)結(jié)構(gòu)

特殊流程控制語句

概述

在任何一門程序設(shè)計語言中跟压,都需要支持滿足程序結(jié)構(gòu)化所需要的三種基本結(jié)構(gòu):

—— 順序結(jié)構(gòu)

—— 分支結(jié)構(gòu)(選擇結(jié)構(gòu))

—— 循環(huán)結(jié)構(gòu)

在PHP中,為支持這三種結(jié)構(gòu)歼培,提供了實(shí)現(xiàn)這三種結(jié)構(gòu)所需的語句震蒋,下面分別進(jìn)行介紹。

順序結(jié)構(gòu):

在程序結(jié)構(gòu)中躲庄,最基本的就是順序結(jié)構(gòu)查剖。程序會按照自上而下的順序執(zhí)行。

基本形式為:

語句1噪窘;

語句2笋庄;

語句n;

分支結(jié)構(gòu):

1.單個if語句:

基本格式:

if(條件表達(dá)式)

{

語句組;

語句組為單條語句時可省略“{ }”倔监。

}

當(dāng)條件表達(dá)式的值為真(true)時直砂,PHP將執(zhí)行語句組,相反條件表達(dá)式的值為假(false)時丐枉,PHP將不執(zhí)行語句組哆键,忽略語句組執(zhí)行下面的語句。


if…else語句:

格式如下

if(條件表達(dá)式){

語句組1

}

else{

語句組2

???//語句組為單條語句時可省略“{ }”瘦锹。

}

if-else 條件判斷與?if 條件判斷類似籍嘹,所不同的是闪盔,if-else 語句的條件表達(dá)式值為真(true)時,會執(zhí)行?if 的本體語句(語句組1)辱士,而條件表達(dá)式值為假(false)時泪掀,則執(zhí)行?else 的本體語句(語句組2)。


3.??elseif結(jié)構(gòu):

<?php

???????$A=88;

???????echo "數(shù)學(xué)成績: ".$A."<p>";

???????if ($A>=90 && $A<=100){

??echo "不錯喔!!這次數(shù)學(xué)成績甲等!!";

???????}elseif ($A>=70 && $A<90){

?echo "還可以...這次數(shù)學(xué)成績乙等!!";

???????}elseif ($A>=60 && $A<70){

echo "勉勉強(qiáng)強(qiáng)及格邊緣...這次數(shù)學(xué)成績丙等!!";

???}else {

echo "有待下次努力...數(shù)學(xué)成績不及格!!";

???????}

?>

巢狀式if..else流程控制使用范例

<?php

$A=88;

echo "數(shù)學(xué)成績: ?$A <p>";

if ($A>=60){

if ($A>=70){

if ($A>=90){

echo "不錯喔!!這次數(shù)學(xué)成績甲等!!";

?????}else {

echo "還可以...這次數(shù)學(xué)成績乙等!!";

?????}

???}else {

echo "勉勉強(qiáng)強(qiáng)及格邊緣...這次數(shù)學(xué)成績丙等!!";

???}

}else {

echo "有待下次努力...數(shù)學(xué)成績不及格!!";

}

?>

4.?switch- case語句

switch(表達(dá)式)

{

case ??值1:

語句序列1颂碘;

break异赫;

case ??值2:

語句序列2;

break头岔;

default:

語句序列?n塔拳;

break;

}



當(dāng)程序執(zhí)行碰到switch條件判斷時峡竣,它會取出鍵值靠抑,然后與語句體中的case所列出的值逐一比較,如果數(shù)值不符合适掰,則將數(shù)值往下一個case傳遞颂碧,如果數(shù)值符合,則執(zhí)行case中的語句类浪,然后再碰到break語句即跳出switch條件判斷载城,如果所有的值比對都不符合,則會執(zhí)行default中的語句费就。

switch語句使用注意事項:

1. switch語句與if語句不同诉瓦,它僅能判斷一種關(guān)系:是否恒等。

2. switch語句中case子句的常量可以是整型常量受楼、字符型常量垦搬、表達(dá)式或變量呼寸。

在同一個switch中艳汽,case子句的常量不能相同,否則第二個值永遠(yuǎn)無法匹配到对雪。

case和 default 子句后面的語句序列允許由多個可執(zhí)行語句組成河狐,且不必用“{ }”括起來,也可以為空語句瑟捣。

switch語句中可省略break語句和default子句馋艺。但省略后會改變流程。

實(shí)例:

<?php

$i=2;switch ($i)

{???? case 0:???????? echo “i的值為:0”;???????? break;??? case 1:???????? echo “i的值為:1”;???????? break;??? case 2:???????? echo “i的值為:2”;???????? break;???? default:??????? echo “錯誤:i的值不在0-3之間";}

?>

循環(huán)結(jié)構(gòu):

1). while循環(huán)語句

基本格式:

while(表達(dá)式)

{

語句或語句序列

}

當(dāng)while循環(huán)語句中表達(dá)式(循環(huán)控制語句)的結(jié)果為真時迈套,程序?qū)⒎磸?fù)執(zhí)行同一段程序:循環(huán)體(while中的語句或語句序列)捐祠,直到滿足一定的條件(表達(dá)式的結(jié)果為假時)后才停止執(zhí)行該段程序。


實(shí)例:

<?php

//求1到100的累加桑李。

$i=1;

????$sum=0;

while($i<=100)

{

$sum+=$i;

$i++;

}

echo $sum;

?>

2).?for循環(huán)語句

基本格式:

for(表達(dá)式1;表達(dá)式2;表達(dá)式3)

{

語句或語句序列;

}

for循環(huán)語句中表達(dá)式1為循環(huán)初始條件踱蛀;表達(dá)式2為循環(huán)控制條件窿给;表達(dá)式3為控制變量遞增;語句或語句序列為循環(huán)體率拒。

<?php for ($i = 1; $i <= 10; $i++) {???? echo $i; } for ($i = 1; ; $i++) {???? if ($i > 10) {???????? break;?????? }???? echo $i; } $i = 1; for (;;) { ???? if ($i > 10) {???????? break;???? }???? echo $i;???? $i++; } for ($i = 1; $i <= 10; echo $i, $i++);

?>

特殊流程控制語句

1).?break

我們之前在?switch 條件判斷中已經(jīng)使用過?break 關(guān)鍵字崩泡,它會使得程序流程離開?switch 本體中的語句,如果?break 使用在?for猬膨、while 或?do-while 循環(huán)結(jié)構(gòu)中時角撞,將會使得程序離開該層循環(huán)。

2).?continue

continue 的作用與?break 有點(diǎn)類似勃痴,continue 若使用在?for谒所、while 或?do-while循環(huán)結(jié)構(gòu)中,當(dāng)程序執(zhí)行至?continue 時沛申,之后的語句將直接被略過百炬,而直接執(zhí)行下一次的循環(huán)動作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末污它,一起剝皮案震驚了整個濱河市剖踊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌衫贬,老刑警劉巖德澈,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異固惯,居然都是意外死亡梆造,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門葬毫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镇辉,“玉大人,你說我怎么就攤上這事贴捡『龈兀” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵烂斋,是天一觀的道長屹逛。 經(jīng)常有香客問我,道長汛骂,這世上最難降的妖魔是什么罕模? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮帘瞭,結(jié)果婚禮上淑掌,老公的妹妹穿的比我還像新娘。我一直安慰自己蝶念,他們只是感情好抛腕,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布诈悍。 她就那樣靜靜地躺著,像睡著了一般兽埃。 火紅的嫁衣襯著肌膚如雪侥钳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天柄错,我揣著相機(jī)與錄音舷夺,去河邊找鬼。 笑死售貌,一個胖子當(dāng)著我的面吹牛给猾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播颂跨,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼敢伸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了恒削?” 一聲冷哼從身側(cè)響起池颈,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钓丰,沒想到半個月后躯砰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡携丁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年琢歇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梦鉴。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡李茫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肥橙,到底是詐尸還是另有隱情魄宏,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布快骗,位于F島的核電站娜庇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏方篮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一励负、第九天 我趴在偏房一處隱蔽的房頂上張望藕溅。 院中可真熱鬧,春花似錦继榆、人聲如沸巾表。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽集币。三九已至考阱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鞠苟,已是汗流浹背乞榨。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留当娱,地道東北人吃既。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像跨细,于是被迫代替她去往敵國和親鹦倚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361