php 操作符與控制結(jié)構(gòu)
操作符
操作符是用來對數(shù)組和變量進(jìn)行某種操作運(yùn)算的符號。
1、算術(shù)操作符
操作符 |
名稱 |
示例 |
+ |
加 |
$a+$b |
- |
減 |
$a-$b |
* |
乘 |
$a*$b |
/ |
除 |
$a/$b |
% |
取余 |
$a%$b |
2、復(fù)合賦值操作符
操作符 |
使用方法 |
等價于 |
+= |
$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 |
前置遞增遞減和后置遞增遞減運(yùn)算符:
$a=++$b;
$a=$b++;
$a=--$b;
$a=$b--;
3、比較運(yùn)算符
操作符 |
名稱 |
使用方法 |
= = |
等于 |
$a= =$b |
= = = |
恒等 |
$a= = =$b |
!= |
不等 |
$a!=$b |
!= = |
不恒等 |
$a!= =$b |
<> |
不等 |
$a<>$b |
< |
小于 |
$a<$b |
> |
大于 |
$a>$b |
<= |
小于等于 |
$a<=$b |
>= |
大于等于 |
$a>=$b |
注:恒等表示只有兩邊操作數(shù)相等并且數(shù)據(jù)類型也相當(dāng)才返回true;
例如:0= ="0" 這個返回為true ,因?yàn)椴僮鲾?shù)相等
0= = ="0" 這個返回為false,因?yàn)閿?shù)據(jù)類型不同
4、邏輯運(yùn)算符
操作符 |
使用方法 |
使用方法 |
說明 |
! |
非 |
!$b |
如果$b是false,則返回true;否則相反 |
&& |
與 |
$a&&$b |
如果$a和$b都是true,則結(jié)果為true;否則為false |
|| |
或 |
$a||$b |
如果$a和$b中有一個為true或者都為true時,其結(jié)果為true;否則為false |
and |
與 |
$a and $b |
與&&相同,但其優(yōu)先級較低 |
or |
或 |
$a or $b |
與||相同,但其優(yōu)先級較低 |
操作符"and"和"or"比&&和||的優(yōu)先級要低。
5、三元操作符
Condition ? value if true : value if false
示例:($grade>=50 ? "Passed" : "Failed")
6、錯誤抑制操作符:
$a=@(57/0);
除數(shù)不能為0,會出錯,所以加上@避免出現(xiàn)錯誤警告。
7、數(shù)組操作符
操作符 |
使用方法 |
使用方法 |
說明 |
+ |
聯(lián)合 |
!$b |
返回一個包含了$a和$b中所有元素的數(shù)組 |
= = |
等價 |
$a&&$b |
如果$a和$b具有相同的元素,返回true |
= = = |
恒等 |
$a||$b |
如果$a和$b具有相同的元素以及相同的順序,返回true |
!= |
非等價 |
$a and $b |
如果$a和$b不是等價的,返回true |
<> |
非等價 |
如果$a和$b不是等價的,返回true | |
!= = |
非恒等 |
$a or $b |
如果$a和$b不是恒等的,返回true |
操作符的優(yōu)先級和結(jié)合性:
一般地說,操作符具有一組優(yōu)先級,也就是執(zhí)行他們的順序。
操作符還具有結(jié)合性,也就是同一優(yōu)先級的操作符的執(zhí)行順序。這種順序通常有從左到右,從右到左或者不相關(guān)。
下面給出操作符優(yōu)先級的表。最上面的操作符優(yōu)先級最低,按著表的由上而下的順序,優(yōu)先級遞增。
操作符優(yōu)先級
結(jié)合性 |
操作符 |
左 |
, |
左 |
Or |
左 |
Xor |
左 |
And |
右 |
|
左 |
= += -= *= /= .= %= &= |= ^= ~= <<= >>= |
左 |
?: |
左 |
|| |
左 |
&& |
左 |
| |
左 |
^ |
左 |
& |
不相關(guān) |
= = != = = = = != = |
不相關(guān) |
<<= >>= |
左 |
<< >> |
左 |
+ - . |
左 |
* / % |
右 |
! ~ ++ -- (int)(double)(string)(array)(object) @ |
右 |
[] |
不相關(guān) |
New |
不相關(guān) |
() |
為了避免優(yōu)先級混亂,可以使用括號避開優(yōu)先級。
控制結(jié)構(gòu)
如果我們希望有效地相應(yīng)用戶的輸入,代碼就需要具有判斷能力。能夠讓程序進(jìn)行判斷的結(jié)構(gòu)稱為條件。
1、if..else循環(huán)有三種結(jié)構(gòu)
第一種是只有用到if條件,當(dāng)作單純的判斷。解釋成“若發(fā)生了某事則怎樣處理”。語法如下:
if (expr) { statement }
其中的expr為判斷的條件,通常都是用邏輯運(yùn)算符號當(dāng)判斷的條件。而statement為符合條件的執(zhí)行部分程序,若程序只有一行,可以省略大括號 {}。
范例:本例省略大括號。
<?php
if ($state==1)echo "哈哈" ;
?>
這里特別注意的是,判斷是否相等是==而不是=,ASP程序員可能常犯這個錯誤,=是賦值。
范例:本例的執(zhí)行部分有三行,不可省略大括號。
<?php
if ($state==1) {
echo "哈哈 ;
echo "<br>" ;
}
?>
第二種是除了if之外,加上了else的條件,可解釋成“若發(fā)生了某事則怎樣處理,否則該如何解決”。語法如下:
if (expr) { statement1 } else { statement2 }
范例:上面的例子來修改成更完整的處理。其中的else由于只有一行執(zhí)行的指令,因此不用加上大括號。
<?php
if ($state==1) {
echo "哈哈" ;
echo "<br>";
}
else{
echo "呵呵";
echo "<br>";
}
?>
第三種就是遞歸的if..else循環(huán),通常用在多種決策判斷時。它將數(shù)個if..else拿來合并運(yùn)用處理。
直接看下面的例子:
<?php
if ( $a > $b ) {
echo "a 比 b 大" ;
} elseif ( $a == $b ) {
echo "a 等于 b" ;
} else {
echo "a 比 b 小" ;
}
?>
上例只用二層的if..else循環(huán),用來比較a和b兩個變量。實(shí)際要使用這種遞歸if..else循環(huán)時,請小心使用,因?yàn)樘鄬拥难h(huán)容易使設(shè)計(jì)的邏輯出問題,或者少打了大括號等,都會造成程序出現(xiàn)莫名其妙的問題。
2、for循環(huán)就單純只有一種,沒有變化,它的語法如下:
for (expr1; expr2; expr3) { statement }
其中的expr1為條件的初始值。expr2為判斷的條件,通常都是用邏輯運(yùn)算符號(logical operators)當(dāng)判斷的條件。expr3為執(zhí)行statement后要執(zhí)行的部份,用來改變條件,供下次的循環(huán)判斷,如加一..等等。而statement為符合條件的執(zhí)行部分程序,若程序只有一行,可以省略大括號 {}。
下例是用for循環(huán)寫的的例子:
<?php
for ( $i = 1 ; $i <= 10 ; $i ++) {
echo "這是第".$i."次循環(huán)<br>" ;
}
?>
3、switch循環(huán),通常處理復(fù)合式的條件判斷,每個子條件,都是case指令部分。在實(shí)作上若使用許多類似的if指令,可以將它綜合成switch循環(huán)。
語法如下:
switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; }
其中的expr條件,通常為變量名稱。而case后的exprN,通常表示變量值。冒號后則為符合該條件要執(zhí)行的部分。注意要用break跳離循環(huán)。
<?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;
}
?>
這里需要注意的是break;別遺漏了,default,省略是可以的。
很明顯的,上述的例子用if循環(huán)就很麻煩了。當(dāng)然在設(shè)計(jì)時,要將出現(xiàn)機(jī)率最大的條件放在最前面,最少出現(xiàn)的條件放在最后面,可以增加程序的執(zhí)行效率。上例由于每天出現(xiàn)的機(jī)率相同,所以不用注意條件的順序。
- PHP中::、->、self、$this幾種操作符的區(qū)別介紹
- 第三章 php操作符與控制結(jié)構(gòu)代碼
- php學(xué)習(xí)筆記(三)操作符與控制結(jié)構(gòu)
- php smarty模版引擎中變量操作符及使用方法
- php基礎(chǔ)知識:類與對象(4) 范圍解析操作符(::)
- php 流程控制switch的簡單實(shí)例
- php學(xué)習(xí)之流程控制實(shí)現(xiàn)代碼
- PHP中break及continue兩個流程控制指令區(qū)別分析
- php循環(huán)語句 for()與foreach()用法區(qū)別介紹
- php for 循環(huán)語句使用方法詳細(xì)說明
- PHP If Else(elsefi) 語句
- PHP的switch判斷語句的“高級”用法詳解
- PHP入門教程之操作符與控制結(jié)構(gòu)流程詳解
相關(guān)文章
PHP – EasyUI DataGrid 資料存的方式介紹
繼上篇文章 PHP – EasyUI DataGrid 資料取的方式,本篇一條小龍繼續(xù)講述,如何操作 DataGrid,把資料存入資料庫,并實(shí)現(xiàn) MVC 架構(gòu),將資料層分離、獨(dú)立運(yùn)作2012-11-11php學(xué)習(xí)之流程控制實(shí)現(xiàn)代碼
php學(xué)習(xí)之流程控制實(shí)現(xiàn)代碼,學(xué)習(xí)php的朋友可以參考下。2011-06-06PHP+APACHE實(shí)現(xiàn)用戶論證的方法
PHP+APACHE實(shí)現(xiàn)用戶論證的方法...2006-10-10Access數(shù)據(jù)庫導(dǎo)入Mysql的方法之一
Access數(shù)據(jù)庫導(dǎo)入Mysql的方法之一...2006-10-10計(jì)算2000年01月01日起到指定日的天數(shù)
計(jì)算2000年01月01日起到指定日的天數(shù)...2006-10-10利用文件屬性結(jié)合Session實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)
利用文件屬性結(jié)合Session實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)...2006-10-10