在php中運算符是我們程序開發中最基本的一個知識點了,下面我來給各位同學介紹在php中PHP 運算符一的些常用用法介紹.
PHP 運算符
PHP 運算符主要包括:
1.算術運算符
2.賦值運算符
3.比較運算符
4.三元運算符
5.邏輯運算符
6.字符串運算符
7.錯誤控制運算符
算術運算符
運算符 說明 例子 運算結果
+ 加 $x = 2;
$y = $x+1; $y = 3
- 減 $x = 2;
$y = $x-1; $y = 1
* 乘 $x = 2;
$y = $x*3; $y = 6
/ 除,返回結果為浮點類型 $x = 6;
$y = $x/3; $y = 2
% 求余,返回結果為浮點類型 $x = 6;
$y = $x%4; $y = 2
++ 遞加,分為前加和后加
對布爾值和 NULL 無效 $x = 2;
++$x;(前加)
$x++;(后加) $x = 3
– 遞減,分為前遞減和后遞減
對布爾值和 NULL 無效 $x = 2;
–$x;(前減)
$x–;(后減) $x = 1
對于前加和后加,執行后的結果都是變量加1,其區別在于執行時返回結果不一樣,參考下面兩個例子:
遞減同理.
賦值運算符
賦值運算符“=”用于賦值運算,賦值運算符的作用在于把右邊的值賦值給左邊變量:
1 $x = 2;
該例子將整型值 2 賦值給變量 $x.
賦值運算符其他用法
賦值運算符可以嵌套使用:
賦值運算符的一些變形使用方法:
1 $y += $x;
實際上它等同于:
同理有:
$y -= $x;
$y *= $x;
$y /= $x;
$y %= $x;
$y .= $x; // . 為連接運算符,見字符串運算符
比較運算符
運算符 說明 例子 運算結果
== 等于 2 == 3 FALSE
!= 不等于,也可寫作<> 2 == 3 TRUE
> 大于 2 > 3 FALSE
< 小于 2 < 3 TRUE
>= 大于等于 2 >= 3 FALSE
<= 小于等于 2 <= 3 TRUE
比較運算符也可用于字符串比較.
三元運算符
三元可以視作是特殊的比較運算符:
(A) ? (B) : (C)
語法解釋:在 A求值為 TRUE 時整個表達式的值為 B,否則為 C.
例子:
1.$y = ($x == 2) ? $x : 1;
該例子判斷變量$x的值是否等于2,如果$x等于2,那么$y的值就等于$x(也就是等于2),反之$y就等于1.
邏輯運算符
運算符 說明 例子 運算結果
&& 邏輯與,也可寫作 and $x = 2;
$y = 6;
$x && $y > 5 FALSE
|| 邏輯或,也可寫作 or $x = 2;
$y = 6;
$x && $y > 5 TRUE
! 邏輯非,取邏輯的反面 $x = 2;
$y = 6;
!($x > $y) TRUE
連接運算符
字符串運算符主要指連接運算符“.”,它將連接其左右參數字符串.
例子:
如該例子所示,字符和變量共同輸出時需要使用連接運算符.
連接符與賦值運算符一起可構成連接賦值運算符:
錯誤控制運算符
錯誤控制運算符:@,當將其放置在一個 PHP 表達式之前,該表達式可能產生的任何錯誤信息都被忽略掉.
錯誤控制運算符經常用于在可能產生錯誤的地方屏蔽 PHP 的系統錯誤而提示友好的錯誤信息,運算符優先級的一個例外
今天在老王的技術手冊看到一個問題:
輸出是什么?
這個問題, 咋一看或許覺得簡單, 但其實仔細推敲并不簡單,如果說布爾與之前的部分, 是由于優先級的問題, 但是如果僅僅是優先級的問題的話, 那么結果應該是:
$a = (100 && $b) = 200而實際上的結果, 確實高優先級的&&讓步給次優先級的=, 讓 $b = 200 先結合了.
究其原因, 是因為PHP并不完全遵守優先級的定義, 這個在PHP的手冊中也有說明:
Note: Although = has a lower precedence than most other operators, PHP will still allow expressions similar to the following: if (!$a = foo()), in which case the return value of foo() is put into $a.
這樣的設計, 個人不發表看法, 反正在C語言中, 這樣類似的語句是判定為語法錯的. PHP采用這樣的設計, 很可能是歷史原因,
有好奇的同學, 會想知道到底為什么, 之前jayeeliu網友也問過:
laruence你好:
問一個php運算符優先級的問題.$t == 1 && $tt = 2按照php運算符優先級應該是(($t == 1) && $tt) = 2這個順序執行,但實際上應該是($t == 1) && ($tt = 2)我有些不太理解.
其實也簡單, 運算符優先級是在存在二義性文法的時候的一種規約規則選擇的手段, 而PHP的語法分析文件定義中, 卻讓等號和T_BOOLEAN_AND(&&)之前不存在了規約沖突:
expr_without_variable: // 有隱規則存在, 相當于T_BOOLEAN_AND成為了"一元操作符". | expr T_BOOLEAN_AND { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); }
exp最后, 順便說一下, PHP對應于T_BOOLEAN_AND 還定義了 T_LOGICAL_AND(and) 和 T_LOGICAL_OR(or) , 這倆個的優先級都低于等號, 于是就會有了, 很多PHP入門教材示例代碼中經典的:
$result = mysql_query(*) or die(mysql_error());
php 恒等運算符(===)與比較運算符(==)的區別
$a = 0;
$b = FALSE;
$a === FALSE 不成立,但 $b === FALSE成立,如果是==, $a == FALSE 和 $b == FALSE都成立
===運算符還是很有用的,php有些內置函數成功會返回某個值,失敗會返回false,假如成功了但返回的是”"或者0之類的空值你怎么判斷成功或者失敗呢?這是就可以用 === ,它可以區分變量類型.
參考:
比較運算符 例子 名稱 結果
$a == $b 等于 TRUE,如果 $a 等于 $b.
$a === $b 全等 TRUE,如果 $a 等于 $b,并且它們的類型也相同.(PHP 4 引進)
$a != $b 不等 TRUE,如果 $a 不等于 $b.
$a <> $b 不等 TRUE,如果 $a 不等于 $b.
$a !== $b 非全等 TRUE,如果 $a 不等于 $b,或者它們的類型不同.(PHP 4 引進)
$a < $b 小與 TRUE,如果 $a 嚴格小于 $b.
$a > $b 大于 TRUE,如果 $a 嚴格 $b.
$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b.
$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b.
如果比較一個整數和字符串,則字符串會被轉換為整數.如果比較兩個數字字符串,則作為整數比較.此規則也適用于 switch語句.
說了一堆了我們再看看另一篇文章,運算符號(php)操作符號
按運算符號的功能分為
■算數運算符 + – * / % ++ –
■字符串運算符(連接運算符) .
■賦值運算符 = += -= *= %= .=
■比較(關系、條件)運算符> < >= <== == === != <> !==
■邏輯運算符 && and ||or ! not
■位運算符 & | ~ ^ << >> >>>
■其他的預算符? : ” -> -> :: & $
■()改變優先級別
%有兩個目的使用:整除運算;控制范圍,不要用小數,也不要用負數,%會把兩邊的數轉為整數后在整除
控制范圍
$num=4600009;
echo $num%10;//9任何數和10 取余不會超過9
$a++(先用變量再自增1) ++$a(先自增1在用變量) $a-- --$a
比較后的結果只有一種 boolean true false
&按位與(兩個都為1才為1) |按位或(有一個為1就為1) ^異或(不同為1相同為0) ~取反(0與1互換) 左移 << , 右移>> 無符號>>右移
&和|既可以做為邏輯運算符,又可以作為位運算符&&||短路問題:&& 和||會發生短路&&在做運算時,如果前邊的數為false,則后面是否為true,整個表達式都是false||在做運算是,如果前面的數是true,則后邊是否為false,整個表達式都為true;
&或|運算時,兩邊都會被執行.
其他運算符
條件?成立執行這里 :不成立則執行這里
反引號執行操作系統命令:
下一篇 淺析攝影與WEB設計中的構圖