操作符
操作符是用來對數組和變量進行某種操作運算的符號。
1、算術操作符
操作符
名稱
示例
+
加
$a+$b
-
減
$a-$b
*
乘
$a*$b
/
除
$a/$b
%
取余
$a%$b
2、復合賦值操作符
操作符
使用方法
等價於
+=
$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
前置遞增遞減和後置遞增遞減運算符:
$a=++$b;
$a=$b++;
$a=--$b;
$a=$b--;
3、比較運算符
操作符
名稱
使用方法
= =
等於
$a= =$b
= = =
恆等
$a= = =$b
!=
不等
$a!=$b
!= =
不恆等
$a!= =$b
<>
不等
$a<>$b
<
小於
$a<$b
>
大於
$a>$b
<=
小於等於
$a<=$b
>=
大於等於
$a>=$b
注:恆等表示只有兩邊操作數相等並且數據類型也相當才返回true;
例如:0= ="0" 這個返回為true ,因為操作數相等
0= = ="0" 這個返回為false,因為數據類型不同
4、邏輯運算符
操作符
使用方法
使用方法
說明
!
非
!$b
如果$b是false,則返回true;否則相反
&&
與
$a&&$b
如果$a和$b都是true,則結果為true;否則為false
||
或
$a||$b
如果$a和$b中有一個為true或者都為true時,其結果為true;否則為false
and
與
$a and $b
與&&相同,但其優先級較低
or
或
$a or $b
與||相同,但其優先級較低
操作符"and"和"or"比&&和||的優先級要低。
5、三元操作符
Condition ? value if true : value if false
示例:($grade>=50 ? "Passed" : "Failed")
6、錯誤抑制操作符:
$a=@(57/0);
除數不能為0,會出錯,所以加上@避免出現錯誤警告。
7、數組操作符
操作符
使用方法
使用方法
說明
+
聯合
!$b
返回一個包含了$a和$b中所有元素的數組
= =
等價
$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
操作符的優先級和結合性:
一般地說,操作符具有一組優先級,也就是執行他們的順序。
操作符還具有結合性,也就是同一優先級的操作符的執行順序。這種順序通常有從左到右,從右到左或者不相關。
下面給出操作符優先級的表。最上面的操作符優先級最低,按著表的由上而下的順序,優先級遞增。
操作符優先級
結合性
操作符
左
,
左
Or
左
Xor
左
And
右
左
= += -= *= /= .= %= &= |= ^= ~= <<= >>=
左
?:
左
||
左
&&
左
|
左
^
左
&
不相關
= = != = = = = != =
不相關
<<= >>=
左
<< >>
左
+ - .
左
* / %
右
! ~ ++ -- (int)(double)(string)(array)(object) @
右
[]
不相關
New
不相關
()
為了避免優先級混亂,可以使用括號避開優先級。
控制結構
如果我們希望有效地相應用戶的輸入,代碼就需要具有判斷能力。能夠讓程序進行判斷的結構稱為條件。
1、if..else循環有三種結構
第一種是只有用到if條件,當作單純的判斷。解釋成“若發生了某事則怎樣處理”。語法如下:
if (expr) { statement }
其中的expr為判斷的條件,通常都是用邏輯運算符號當判斷的條件。而statement為符合條件的執行部分程序,若程序只有一行,可以省略大括號 {}。
范例:本例省略大括號。
復制代碼 代碼如下:
<?php
if ($state==1)echo "哈哈" ;
?>
這裡特別注意的是,判斷是否相等是==而不是=,ASP程序員可能常犯這個錯誤,=是賦值。
范例:本例的執行部分有三行,不可省略大括號。
復制代碼 代碼如下:
<?php
if ($state==1) {
echo "哈哈 ;
echo "<br>" ;
}
?>
第二種是除了if之外,加上了else的條件,可解釋成“若發生了某事則怎樣處理,否則該如何解決”。語法如下:
if (expr) { statement1 } else { statement2 }
范例:上面的例子來修改成更完整的處理。其中的else由於只有一行執行的指令,因此不用加上大括號。
復制代碼 代碼如下:
<?php
if ($state==1) {
echo "哈哈" ;
echo "<br>";
}
else{
echo "呵呵";
echo "<br>";
}
?>
第三種就是遞歸的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循環時,請小心使用,因為太多層的循環容易使設計的邏輯出問題,或者少打了大括號等,都會造成程序出現莫名其妙的問題。
2、for循環就單純只有一種,沒有變化,它的語法如下:
for (expr1; expr2; expr3) { statement }
其中的expr1為條件的初始值。expr2為判斷的條件,通常都是用邏輯運算符號(logical operators)當判斷的條件。expr3為執行statement後要執行的部份,用來改變條件,供下次的循環判斷,如加一..等等。而statement為符合條件的執行部分程序,若程序只有一行,可以省略大括號 {}。
下例是用for循環寫的的例子:
復制代碼 代碼如下:
<?php
for ( $i = 1 ; $i <= 10 ; $i ++) {
echo "這是第".$i."次循環<br>" ;
}
?>
3、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;
}
?>
這裡需要注意的是break;別遺漏了,default,省略是可以的。
很明顯的,上述的例子用if循環就很麻煩了。當然在設計時,要將出現機率最大的條件放在最前面,最少出現的條件放在最後面,可以增加程序的執行效率。上例由於每天出現的機率相同,所以不用注意條件的順序。