首頁 >後端開發 >php教程 >運算符 - PHP手冊筆記

運算符 - PHP手冊筆記

WBOY
WBOY原創
2016-08-08 09:29:20820瀏覽

運算子優先權

每種程式語言都有運算符,運算符要學會靈活使用。

運算符擁有不同的優先權和結合方向。

<code><?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</code>

在需要的時候使用括號,可以增強程式碼的可讀性。

算術運算符

取模運算子的結果和被除數的符號相同。

賦值運算子將原變數的值拷貝到新變數中,有個例外就是碰到物件時,是以引用賦值的,除非明確使用clone關鍵字來拷貝。

new運算子自動傳回一個參考。

位運算子

位移有一下幾個規則:

  • 向任何方向移出去的位元都被丟棄。
  • 左移時以零填充,且正負號不被保留。
  • 右移時以符號位填充,表示正負號保留。

這一節的重點就是把手冊重點的幾個範例程式看懂吧。範例中字串的XOR運算比較難理解,這個以後再看。還有整數的位移,感覺理解就好吧。

比較運算子

普通等號==只需型別轉換後兩值相等就回傳真。

如果比較一個數字和字串或比較涉及到數字內容的字串,則字串會被轉換為數值並且比較按照數值來進行。

<code><?php 
var_dump(0 == "a");  // true
var_dump("1" == "01");  // true
var_dump("10" == "1e1");  // true</code>

自PHP 5.3起,可以省略三元運算子中間那部分。表達式expr1 ?: expr3在expr1真時傳回expr1,否則回傳expr3。三元運算子是從左到右計算的。

錯誤控制運算子

PHP支援一個錯誤控制運算子@,@運算子只對表達式有效。將其放在表達式前,該表達式可能產生的任何錯誤訊息都被忽略。

不能把它放在函數或類別的定義之前,也不能用於條件結構例如if和foreach等。

執行運算子

PHP支援一個執行運算子:反引號,就是鍵盤左上角那個。效果與函數shell_exec()相同。

<code><?php 
$output = `systeminfo`;
$outip = shell_exec(&#39;ipconfig&#39;);
echo "<pre class="brush:php;toolbar:false">$outip
"; echo "
$output
";

反引號運算子在啟動了安全模式或關閉了shell_exec()時是無效的。

注意!反引號不能在雙引號字串中使用。

遞增遞減運算子

遞增/遞減運算子不影響布林值。
遞減NULL值也沒有效果,但是遞增NULL的結果是1。

在處理字元變數的算術運算時,PHP沿襲了Perl的習慣,而非C的。例如,在Perl中$a = 'Z'; $a++;將把$a變成'AA'。

注意!字元變數只能遞增,不能遞減,並且只支援純字母(a-z和A-Z)。遞增/遞減其他字元字元變數則無效,原字串沒有變化。

<code><?php 
$z = &#39;z&#39;;
$Z = &#39;Z&#39;;
var_dump(++$z);  // &#39;aa&#39;
var_dump(++$Z);  // &#39;AA&#39;</code>

邏輯運算子

||or的優先順序高。 &&and的優先順序高。

字串運算子

第一個是連接運算子.,第二個是連接賦值運算子.=

數組運算符

  1. 聯合:$a + $b。把右邊的陣列元素附加到左邊的陣列後面,兩個陣列中都有的鍵名,則只用左邊數組中的,有變動額被忽略。

  2. 相等:$a == $b。具有相同的鍵值對。

  3. 全等:$a === $b。具有相同的鍵值對,且順序和類型都相同。

  4. 不等:$a != $b$a <> $b

  5. 不全等:$a !== $b

數組中的單元如果具有相同的鍵名和值則比較時相等,不要在意順序和類型。

<code><?php 
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");
var_dump($a);
var_dump($b);
var_dump($a == $b);
var_dump($a === $b);</code>

輸出結果如下圖所示。

<code>array (size=2)
  0 => string 'apple' (length=5)
  1 => string 'banana' (length=6)

array (size=2)
  1 => string 'banana' (length=6)
  0 => string 'apple' (length=5)

boolean true

boolean false</code>

類型運算符

PHP中有一個型別運算子instanceof,用來判斷一個PHP變數是否屬於某一類別的實例。

<code><?php 
class MyParent {}
class MyClass extends MyParent {}
class NotMyClass {}
interface MyInterface {}
class InClass implements MyInterface {}
$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 MyInterface);  // true
$c = 'InClass';
var_dump($b instanceof $c);  // true
var_dump($c instanceof stdClass);  // false</code>

注意,instanceof不允許用來偵測常數。

(全文完)

以上就介紹了運算符 - PHP手冊筆記,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn