摘要:與變量不同,常量不存在可變常量,如果常量名是動態的,也可以用函數來獲取常量的值。執行運算符命令反引號。遞增遞減運算符不影響布爾值。遞增遞減其他字符變量則無效,原字符串沒有變化。不允許用來檢測常量。
變量 基本
引用賦值
global 關鍵字
以下結果在命令行中有效,網頁php中請不要嘗試。。。都是坑。
Example #1 使用 global或$GLOBALS
以下為網頁php文件中測試結果
靜態變量
僅在局部函數域中存在,但當程序執行離開此作用域時,其值并不丟失。
如果在聲明中用表達式的結果對其賦值會導致解析錯誤。
Example #5 使用靜態變量的例子
可變變量
$bar . " ";//I am bar. echo $foo->$baz[1] . " ";//I am bar. $start = "b"; $end = "ar"; echo $foo->{$start . $end} . " ";//I am bar. $arr = "arr"; echo $foo->$arr[1] . " ";// I am r. echo $foo->{$arr}[1] . " ";//I am B. ?> Warning
注意,在 PHP 的函數和類的方法中,超全局變量不能用作可變變量。$this 變量也是一個特殊變量,不能被動態引用。常量
define() 函數來定義常量,在 PHP 5.3.0 以后,可以使用 const 關鍵字在類定義之外定義常量。一個常量一旦被定義,就不能再改變或者取消定義。
常量只能包含標量數據(boolean,integer,float 和 string)。
Note: 和使用 define() 來定義常量相反的是,使用 const 關鍵字定義常量必須處于最頂端的作用區域,因為用此方法是在編譯時定義的。這就意味著不能在函數內,循環內以及 if 語句之內用 const 來定義常量。
與變量不同,常量不存在可變常量,如果常量名是動態的,也可以用函數 constant() 來獲取常量的值。用 get_defined_constants() 可以獲得所有已定義的常量列表。
運算符 算術運算符例子 | 名稱 | 結果 |
---|---|---|
-$a | 取反 | $a 的負值。 |
$a + $b | 加法 | $a 和 $b 的和。 |
$a - $b | 減法 | $a 和 $b 的差。 |
$a * $b | 乘法 | $a 和 $b 的積。 |
$a / $b | 除法 | $a 除以 $b 的商。 |
$a % $b | 取模 | $a 除以 $b 的余數。 |
$a ** $b | 冪 | Introduced in PHP 5.6. |
php中沒有整除,可以使用floor($a / $b)代替。賦值運算符
$b = &$a; // $b 是 $a 的引用 See the Arithmetic Operators page (http://www.php.net/manual/en/language.operators.arithmetic.php) Assignment Same as: $a += $b $a = $a + $b Addition $a -= $b $a = $a - $b Subtraction $a *= $b $a = $a * $b Multiplication $a /= $b $a = $a / $b Division $a %= $b $a = $a % $b Modulus See the String Operators page(http://www.php.net/manual/en/language.operators.string.php) $a .= $b $a = $a . $b Concatenate See the Bitwise Operators page (http://www.php.net/manual/en/language.operators.bitwise.php) $a &= $b $a = $a & $b Bitwise And $a |= $b $a = $a | $b Bitwise Or $a ^= $b $a = $a ^ $b Bitwise Xor $a <<= $b $a = $a << $b Left shift $a >>= $b $a = $a >> $b Right shift位運算符
位運算符允許對整型數中指定的位進行求值和操作。
例子 | 名稱 | 結果 |
---|---|---|
$a & $b | And(按位與) | 將把 $a 和 $b 中都為 1 的位設為 1。 |
$a|$b | Or(按位或) | 將把 $a 和 $b 中任何一個為 1 的位設為 1。 |
$a ^ $b | Xor(按位異或) | 將把 $a 和 $b 中一個為 1 另一個為 0 的位設為 1。 |
~ $a | Not(按位取反) | 將 $a 中為 0 的位設為 1,反之亦然。 |
$a << $b | Shift left(左移) | 將 $a 中的位向左移動 $b 次(每一次移動都表示“乘以 2”)。 |
$a >> $b | Shift right(右移) | 將 $a 中的位向右移動 $b 次(每一次移動都表示“除以 2”)。 |
php中右移是有符號右移(算術右移),沒有無符號右移(邏輯右移)。比較運算符
位運算符建議和二進制整形(如0b100110)結合使用。
例子 | 名稱 | 結果 |
---|---|---|
$a == $b | 等于 | TRUE,如果類型轉換后 $a 等于 $b。 |
$a === $b | 全等 | TRUE,如果 $a 等于 $b,并且它們的類型也相同。 |
$a != $b | 不等 | TRUE,如果類型轉換后 $a 不等于 $b。 |
$a <> $b | 不等 | TRUE,如果類型轉換后 $a 不等于 $b。 |
$a !== $b | 不全等 | TRUE,如果 $a 不等于 $b,或者它們的類型不同。 |
$a < $b | 小與 | TRUE,如果 $a 嚴格小于 $b。 |
$a > $b | 大于 | TRUE,如果 $a 嚴格大于 $b。 |
$a <= $b | 小于等于 | TRUE,如果 $a 小于或者等于 $b。 |
$a >= $b | 大于等于 | TRUE,如果 $a 大于或者等于 $b。 |
$a <=> $b | 太空船運算符(組合比較符) | 當$a小于、等于、大于$b時 分別返回一個小于、等于、大于0的integer 值。 PHP7開始提供。 |
$a ?? $b ?? $c | NULL 合并操作符 | 從左往右第一個存在且不為 NULL 的操作數。如果都沒有定義且不為 NULL,則返回 NULL。PHP7開始提供。 |
true var_dump("1" == "01"); // 1 == 1 -> true var_dump("10" == "1e1"); // 10 == 10 -> true var_dump(100 == "1e2"); // 100 == 100 -> true ?>
比較多種類型
運算數 1 類型 | 運算數 2 類型 | 結果 |
---|---|---|
null 或 string | string | 將 NULL 轉換為 "",進行數字或詞匯比較 |
bool 或 null | 任何其它類型 | 轉換為 bool,FALSE < TRUE |
object | object | 內置類可以定義自己的比較,不同類不能比較,相同類和數組同樣方式比較屬性(PHP 4 中),PHP 5 有其自己的說明 |
string,resource 或 number | string,resource 或 number | 將字符串和資源轉換成數字,按普通數學比較 |
array | array | 具有較少成員的數組較小,如果運算數 1 中的鍵不存在于運算數 2 中則數組無法比較,否則挨個值比較(見下例) |
object | 任何其它類型 | object 總是更大 |
array | 任何其它類型 | array 總是更大 |
PHP 支持一個錯誤控制運算符:@。當將其放置在一個 PHP 表達式之前,該表達式可能產生的任何錯誤信息都被忽略掉。
This operator is affectionately known by veteran phpers as the stfu(shut the fuck up) operator。執行運算符(shell命令)
反引號(``)。注意這不是單引號!PHP 將嘗試將反引號中的內容作為 shell 命令來執行,并將其輸出信息返回(即,可以賦給一個變量而不是簡單地丟棄到標準輸出)。使用反引號運算符“`”的效果與函數 shell_exec() 相同。
$output"; ?>
Note: 與其它某些語言不同,反引號不能在雙引號字符串中使用。遞增/遞減運算符(字符遞增)
PHP 支持 C 風格的前/后遞增與遞減運算符。
Note: 遞增/遞減運算符不影響布爾值。遞減 NULL 值也沒有效果,但是遞增 NULL 的結果是 1。
例子 | 名稱 | 效果 |
---|---|---|
++$a | 前加 | $a 的值加一,然后返回 $a。 |
$a++ | 后加 | 返回 $a,然后將 $a 的值加一。 |
--$a | 前減 | $a 的值減一, 然后返回 $a。 |
$a-- | 后減 | 返回 $a,然后將 $a 的值減一。 |
字符遞增:PHP 沿襲了 Perl 的習慣,而非 C 的。例如,在 Perl 中 $a = "Z"; $a++; 將把 $a 變成"AA",而在 C 中,a = "Z"; a++; 將把 a 變成 "["("Z" 的 ASCII 值是 90,"[" 的 ASCII 值是 91)。注意字符變量只能遞增,不能遞減,并且只支持純字母(a-z 和 A-Z)。遞增/遞減其他字符變量則無效,原字符串沒有變化。
以上輸出:
== Alphabets == X Y Z AA AB AC == Digits == A9 B0 B1 B2 B3 B4 A09 A10 A11 A12 A13 A14
注意"E"這個字符:
$a="9D9"; var_dump(++$a); => string(3) "9E0" but counting onwards from there $a="9E0"; var_dump(++$a); => float(10)邏輯運算符(and,or,xor)
例子 | 名稱 | 效果 |
---|---|---|
$a and $b | And(邏輯與) | TRUE,如果 $a 和 $b 都為 TRUE。 |
$a or $b | Or(邏輯或) | TRUE,如果 $a 或 $b 任一為 TRUE。 |
$a xor $b | Xor(邏輯異或) | TRUE,如果 $a 或 $b 任一為 TRUE,但不同時是。 |
! $a | Not(邏輯非) | TRUE,如果 $a 不為 TRUE。 |
$a && $b | And(邏輯與)短路 | TRUE,如果 $a 和 $b 都為 TRUE。 |
$a||$b | Or(邏輯或)短路 | TRUE,如果 $a 或 $b 任一為 TRUE。 |
字符串運算符
.
The above will print out "3" instead of "Result: 6", since first the string "Result3" is created and this is then added to 3 yielding 3, non-empty non-numeric strings being converted to 0.
數組運算符(慎用+)例子 | 名稱 | 效果 |
---|---|---|
$a + $b | 聯合 | $a 和 $b 的聯合。 |
$a == $b | 相等 | 如果 $a 和 $b 具有相同的鍵/值對則為 TRUE。 |
$a === $b | 全等 | 如果 $a 和 $b 具有相同的鍵/值對并且順序和類型都相同則為 TRUE。 |
$a != $b | 不等 | 如果 $a 不等于 $b 則為 TRUE。 |
$a <> $b | 不等 | 如果 $a 不等于 $b 則為 TRUE。 |
$a !== $b | 不全等 | 如果 $a 不全等于 $b 則為 TRUE。 |
+ 運算符把右邊的數組元素附加到左邊的數組后面,兩個數組中都有的鍵名,則只用左邊數組中的,右邊的被忽略。
Example #1 比較數組
"banana", "0" => "apple"); var_dump($a == $b); // bool(true) var_dump($a === $b); // bool(false) ?>
Example #2 合并數組(+慎用)
//output $a + $b : Array ( [0] => one [1] => two [2] => five ) array_unique(array_merge(Array,Array)):Array ( [0] => one [1] => two [2] => three [3] => four [4] => five )類型運算符
instanceof:
1.確定一個 PHP 變量是否屬于某一類 class 的實例。
2.確定一個變量是不是繼承自某一父類的子類的實例。
3.確定一個變量是不是實現了某個接口的對象的實例。
雖然 instanceof 通常直接與類名一起使用,但也可以使用對象或字符串變量。
Example #5 對其它變量使用 instanceof
如果被檢測的變量不是對象,instanceof 并不發出任何錯誤信息而是返回 FALSE。不允許用來檢測常量。
Example #6 用 instanceof 檢測其它變量
運算符優先級
結合方向 | 運算符 | 附加信息 |
---|---|---|
無 | clone new | clone 和 new |
左 | [ | array() |
右 | ** | 算術運算符 |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 類型和遞增/遞減 |
無 | instanceof | 類型 |
右 | ! | 邏輯運算符 |
左 | * / % | 算術運算符 |
左 | + - . | 算術運算符和字符串運算符 |
左 | << >> | 位運算符 |
無 | < <= > >= | 比較運算符 |
無 | == != === !== <> <=> | 比較運算符 |
左 | & | 位運算符和引用 |
左 | ^ | 位運算符 |
左 | | | 位運算符 |
左 | && | 邏輯運算符 |
左 | || | 邏輯運算符 |
左 | ?? | 比較運算符 |
左 | ? : | ternary |
right | = += -= *= **= /= .= %= &=|=^= <<= >>= | 賦值運算符 |
左 | and | 邏輯運算符 |
左 | xor | 邏輯運算符 |
左 | or | 邏輯運算符 |
1] ?>
and/or優先級特別低:
Because "and/or" have lower priority than "=" but "||/&&" have higher.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28143.html
摘要:類與對象基本概念如果在之后跟著的是一個包含有類名的字符串,則該類的一個實例被創建。如果該類屬于一個名字空間,則必須使用其完整名稱。如果一個類被聲明為,則不能被繼承。命名空間通過關鍵字來聲明。 類與對象 基本概念 new:如果在 new 之后跟著的是一個包含有類名的字符串,則該類的一個實例被創建。如果該類屬于一個名字空間,則必須使用其完整名稱。 Example #3 創建一個實例 ...
摘要:的語法和其它流程控制結構相似部分允許設定代碼段的行為。返回值在失敗時返回并且發出警告。當一個函數是有條件被定義時,必須在調用函數之前定義。有條件的函數不能在此處調用函數,因為它還不存在,但可以調用函數。 流程控制 PHP 提供了一些流程控制的替代語法,包括 if,while,for,foreach 和 switch。替代語法的基本形式是把左花括號({)換成冒號(:),把右花括號(})分...
摘要:非法下標類型會產生一個級別錯誤。用負數下標寫入字符串時會產生一個級別錯誤,用負數下標讀取字符串時返回空字符串。浮點數也會被轉換為整型,意味著其小數部分會被舍去。 Boolean 當轉換為 boolean 時,以下值被認為是 FALSE:布爾值 FALSE 本身整型值 0(零)浮點型值 0.0(零)空字符串,以及字符串 0不包括任何元素的數組[]特殊類型 NULL(包括尚未賦值的變量)從...
摘要:學習至今一年有余,筆記積累挺多的,也挺雜的,寫篇文章整理一下吧。基礎部分輸出文本的基礎指令和。函數內部聲明的變量擁有作用域,只能在函數內部進行訪問。布爾型要指定一個布爾值,使用關鍵字或。 php學習至今一年有余,筆記積累挺多的,也挺雜的,寫篇文章整理一下吧。 php基礎部分 showImg(http://segmentfault.com/img/bVcWhR); PHP 輸出文本...
摘要:最近計劃把手冊,認真的先過一遍。語言參考類型新認知強制轉換類型用。后期靜態綁定從這里開始語言參考生成器新認知生成器汗水的核心是關鍵字。語言參考預定義變量超全局變量前一個錯誤信息原始數據以上 showImg(https://segmentfault.com/img/remote/1460000010147451); 最近計劃把 PHP手冊,認真的先過一遍。記錄一些以前不知道,不明確的知識...
閱讀 3564·2021-10-15 09:43
閱讀 3487·2021-09-02 15:21
閱讀 2193·2021-08-11 11:23
閱讀 3238·2019-08-30 15:54
閱讀 1923·2019-08-30 13:54
閱讀 3199·2019-08-29 18:35
閱讀 668·2019-08-29 16:58
閱讀 1736·2019-08-29 12:49