原文:
運算子 - php手冊筆記
每種程式語言都有運算子,運算子要學會靈活使用。
運算子擁有不同的優先順序和結合方向。
<?php
var_dump(1 <= 1 == 1); // true
var_dump(true ? 0 : true ? 1 : 2); // 2
$a = 1;
var_dump(++$a + $a++); // may print 4 or 5
在需要的時候使用括號,可以增強**的可讀性。
取模運算子的結果和被除數的符號相同。
賦值運算子將原變數的值拷貝到新變數中,有個例外就是碰到物件時,是以引用賦值的,除非明確使用clone
關鍵字來拷貝。
new運算子自動返回乙個引用。
位移有一下幾個規律:
這一節的重點就是把手冊重點的幾個示例程式看懂吧。示例中字串的xor運算比較難理解,這個以後再看。還有整數的位移,感覺理解就好吧。
普通等號==
只需型別轉換後兩值相等就返回真。
如果比較乙個數字和字串或者比較涉及到數字內容的字串,則字串會被轉換為數值並且比較按照數值來進行。
<?php
var_dump(0 == "a"); // true
var_dump("1" == "01"); // true
var_dump("10" == "1e1"); // true
自php 5.3起,可以省略三元運算子中間那部分。表示式expr1 ?: expr3
在expr1真時返回expr1,否則返回expr3。三元運算子是從左往右計算的。
php支援乙個錯誤控制運算子@,@運算子只對表示式有效。將其放在表示式前,該表示式可能產生的任何錯誤資訊都被忽略掉。
不能把它放在函式或類的定義之前,也不能用於條件結構例如if和foreach等。
php支援乙個執行運算子:反引號,就是鍵盤左上角那個。效果與函式shell_exec()
相同。
<?php
$output = `systeminfo`;
$outip = shell_exec('ipconfig');
echo "$outip
";
echo "
$output";
反引號運算子在啟用了安全模式或者關閉了shell_exec()
時是無效的。
注意!反引號不能在雙引號字串中使用。
遞增/遞減運算子不影響布林值。
遞減null值也沒有效果,但是遞增null的結果是1。
在處理字元變數的算術運算時,php沿襲了perl的習慣,而非c的。例如,在perl中$a = 'z'; $a++;
將把$a變成'aa'。
注意!字元變數只能遞增,不能遞減,並且只支援純字母(a-z和a-z)。遞增/遞減其他字元字元變數則無效,原字串沒有變化。
<?php
$z = 'z';
$z = 'z';
var_dump(++$z); // 'aa'
var_dump(++$z); // 'aa'
||
比or
的優先順序高。&&
比and
的優先順序高。
第乙個是連線運算子.
,第二個是連線賦值運算子.=
。
聯合:$a + $b
。把右邊的陣列元素附加到左邊的陣列後面,兩個陣列中都有的鍵名,則只用左邊陣列中的,有變動額被忽略。
相等:$a == $b
。具有相同的鍵值對。
全等:$a === $b
。具有相同的鍵值對,並且順序和型別都相同。
不等:$a != $b
或$a <> $b
。
不全等:$a !== $b
。
陣列中的單元如果具有相同的鍵名和值則比較時相等,不要在意順序和型別。
<?php
var_dump($a);
var_dump($b);
var_dump($a == $b);
var_dump($a === $b);
輸出結果如下所示。
array (size=2)
1 => string 'banana' (length=6)
array (size=2)
1 => string 'banana' (length=6)
boolean true
boolean false
php中有乙個型別運算子instanceof
,用於確定乙個php變數是否屬於某一類的例項。
<?php
class myparent {}
class myclass extends myparent {}
class notmyclass {}
inte***ce myinte***ce {}
class inclass implements myinte***ce {}
$a = new myclass;
var_dump($a instanceof myclass); // true
var_dump($a instanceof notmyclass); // false
var_dump($a instanceof myparent); // true
$b = new inclass;
var_dump($b instanceof myinte***ce); // true
$c = 'inclass';
var_dump($b instanceof $c); // true
var_dump($c instanceof stdclass); // false
注意,instanceof
不允許用來檢測常量。
(全文完)
PHP筆記 運算子篇
簡介 php運算子學習筆記 1.基本規則 如果運算子優先順序相同,則由運算子的結合方向決定如何運算。沒有結合方向的同優先順序運算子不能連在一起使用。即使在沒有必要的情況下,最好也使用括號明確運算的順序。具體運算子的優先順序參照 2.結合方向的理解 3.取模 運算中的注意點 在進行取模運算前,運算的數...
php學習筆記 運算子
一 含義 加減乘除,或比較大小,或判斷真假 二 按參與運算的資料個數分類 單目運算子 雙目運算子 三元運算子 expr1 expr2 expr3 三 按功能分類 賦值 算術 對整數數字進行 取餘操作 如果不是整數,會先自動轉換為整數之後再進行取餘。轉換為整數的做法是,直接去掉小數部分 v1 10 4...
php運算子取整 PHP 運算子
數學計算 1.使用 abs 函式設定數值的絕對值。輸出 5 echo abs 5 2.使用 ceil 函式進製取整。輸出 6 echo ceil 5.8 echo ceil 5.1 3.使用 floor 函式截斷取整。輸出 5 echo floor 5.8 echo floor 5.1 4.使用 r...