操作符
操作符是用来对数组和变量进行某种操作运算的符号。
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 ループの構造は 3 つあります。
最初のループは if 条件のみを使用し、単純な判定として扱います。 「何かが起こったらどうするか」と解釈されます。構文は次のとおりです。
if (expr) { ステートメント }
ここで、expr は判定条件であり、通常は論理演算記号を判定条件として使用します。ステートメントは、条件を満たすプログラムの実行部分です。プログラムが 1 行のみの場合は、中括弧 {} を省略できます。
例: この例では中括弧が省略されています。
コードをコピー コードは次のとおりです:
if ($state==1)エコー「ははは」
例: この例の実行部分は 3 行あり、中括弧は省略できません。
コードは次のとおりです: if ($state==1) {
echo "haha;echo "
" ;
}
?>
2 つ目は、if に加えて else 条件を追加することです。は、「何かが起こった場合の対処方法、またはそれ以外の場合の解決方法」と解釈できます。 構文は次のとおりです:
if (expr) { state1 } else { state2 }
例: 上記の例を次のように変更します。処理は 1 行だけなので、中括弧を追加する必要はありません。
<.>if ($state==1) { echo "はは" ; echo "
"; } else{
echo "
"
}
?>
再帰的な if..else ループです。通常、さまざまな意思決定に使用されます。複数の if..else を組み合わせて直接適用します。
コードをコピー
echo "a は b より大きい" } elseif ( $a = = $b ) { echo "a は b に等しい" ; } else { echo "a は b より小さい" ;
? >
上記の例では、2 つの変数 a と b を比較するために 2 レベルの if..else ループのみを使用しています。この種の再帰的な if..else ループを実際に使用する場合は、慎重に使用してください。多くのレベルのループを簡単に作成できます。ロジックの問題や中括弧の欠落などにより、プログラムに不可解な問題が発生します。
2. 変更のない for ループは 1 種類のみです。構文は次のとおりです。
for ( expr1; expr2; expr3) { ステートメント }
ここで、 expr1 は条件の初期値です。 expr2 は判定条件として使用されます。 expr3 はステートメント実行後に実行する条件で、次のサイクルで判定するための条件を変更する(1 つ追加するなど)ために使用されます。ステートメントは、条件を満たすプログラムの実行部分です。プログラムが 1 行のみの場合は、中括弧 {} を省略できます。
次の例は for ループを使用して記述されています:
コードをコピーします
?> 3. スイッチ ループは通常、複合条件判断を処理します。実際には、同様の if 命令が多数使用されている場合、それらはスイッチ ループに合成できます。 構文は次のとおりです:
switch (expr) { case expr1: block; case expr2: block; } expr 条件は通常、変数名です。 case の後の exprN は通常、変数の値を表します。コロン以降が条件に合致した実行部分となります。ループを抜け出すには必ず Break を使用してください。
コードをコピー
コードは次のとおりです:
case "火曜日" : echo "今日は火曜日" ; >case "水" : エコー "今日は水曜日" ; ケース "木" : エコー "今日は木曜日" ;
ケース "金曜日" :echo "今日は金曜日です" ;
break;
デフォルト:
echo "今日は休日です" ;
break;
}
?>
ここで注意が必要なのはbreakです。省略しないでください。省略しても問題ありません。
明らかに、上記の例で if ループを使用するのは非常に面倒です。もちろん、設計時に最も発生確率の高い条件を先頭に、最も発生確率の低い条件を最後に配置すると、プログラムの実行効率が向上します。上記の例では、発生確率は毎日同じなので、条件の順序を気にする必要はありません。