摘要:與變量不同,常量不存在可變常量,如果常量名是動(dòng)態(tài)的,也可以用函數(shù)來獲取常量的值。執(zhí)行運(yùn)算符命令反引號(hào)。遞增遞減運(yùn)算符不影響布爾值。遞增遞減其他字符變量則無效,原字符串沒有變化。不允許用來檢測(cè)常量。
變量 基本
引用賦值
global 關(guān)鍵字
以下結(jié)果在命令行中有效,網(wǎng)頁php中請(qǐng)不要嘗試。。。都是坑。
Example #1 使用 global或$GLOBALS
以下為網(wǎng)頁php文件中測(cè)試結(jié)果
靜態(tài)變量
僅在局部函數(shù)域中存在,但當(dāng)程序執(zhí)行離開此作用域時(shí),其值并不丟失。
如果在聲明中用表達(dá)式的結(jié)果對(duì)其賦值會(huì)導(dǎo)致解析錯(cuò)誤。
Example #5 使用靜態(tài)變量的例子
可變變量
$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 的函數(shù)和類的方法中,超全局變量不能用作可變變量。$this 變量也是一個(gè)特殊變量,不能被動(dòng)態(tài)引用。常量
define() 函數(shù)來定義常量,在 PHP 5.3.0 以后,可以使用 const 關(guān)鍵字在類定義之外定義常量。一個(gè)常量一旦被定義,就不能再改變或者取消定義。
常量只能包含標(biāo)量數(shù)據(jù)(boolean,integer,float 和 string)。
Note: 和使用 define() 來定義常量相反的是,使用 const 關(guān)鍵字定義常量必須處于最頂端的作用區(qū)域,因?yàn)橛么朔椒ㄊ窃诰幾g時(shí)定義的。這就意味著不能在函數(shù)內(nèi),循環(huán)內(nèi)以及 if 語句之內(nèi)用 const 來定義常量。
與變量不同,常量不存在可變常量,如果常量名是動(dòng)態(tài)的,也可以用函數(shù) constant() 來獲取常量的值。用 get_defined_constants() 可以獲得所有已定義的常量列表。
運(yùn)算符 算術(shù)運(yùn)算符例子 | 名稱 | 結(jié)果 |
---|---|---|
-$a | 取反 | $a 的負(fù)值。 |
$a + $b | 加法 | $a 和 $b 的和。 |
$a - $b | 減法 | $a 和 $b 的差。 |
$a * $b | 乘法 | $a 和 $b 的積。 |
$a / $b | 除法 | $a 除以 $b 的商。 |
$a % $b | 取模 | $a 除以 $b 的余數(shù)。 |
$a ** $b | 冪 | Introduced in PHP 5.6. |
php中沒有整除,可以使用floor($a / $b)代替。賦值運(yùn)算符
$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位運(yùn)算符
位運(yùn)算符允許對(duì)整型數(shù)中指定的位進(jìn)行求值和操作。
例子 | 名稱 | 結(jié)果 |
---|---|---|
$a & $b | And(按位與) | 將把 $a 和 $b 中都為 1 的位設(shè)為 1。 |
$a|$b | Or(按位或) | 將把 $a 和 $b 中任何一個(gè)為 1 的位設(shè)為 1。 |
$a ^ $b | Xor(按位異或) | 將把 $a 和 $b 中一個(gè)為 1 另一個(gè)為 0 的位設(shè)為 1。 |
~ $a | Not(按位取反) | 將 $a 中為 0 的位設(shè)為 1,反之亦然。 |
$a << $b | Shift left(左移) | 將 $a 中的位向左移動(dòng) $b 次(每一次移動(dòng)都表示“乘以 2”)。 |
$a >> $b | Shift right(右移) | 將 $a 中的位向右移動(dòng) $b 次(每一次移動(dòng)都表示“除以 2”)。 |
php中右移是有符號(hào)右移(算術(shù)右移),沒有無符號(hào)右移(邏輯右移)。比較運(yùn)算符
位運(yùn)算符建議和二進(jìn)制整形(如0b100110)結(jié)合使用。
例子 | 名稱 | 結(jié)果 |
---|---|---|
$a == $b | 等于 | TRUE,如果類型轉(zhuǎn)換后 $a 等于 $b。 |
$a === $b | 全等 | TRUE,如果 $a 等于 $b,并且它們的類型也相同。 |
$a != $b | 不等 | TRUE,如果類型轉(zhuǎn)換后 $a 不等于 $b。 |
$a <> $b | 不等 | TRUE,如果類型轉(zhuǎn)換后 $a 不等于 $b。 |
$a !== $b | 不全等 | TRUE,如果 $a 不等于 $b,或者它們的類型不同。 |
$a < $b | 小與 | TRUE,如果 $a 嚴(yán)格小于 $b。 |
$a > $b | 大于 | TRUE,如果 $a 嚴(yán)格大于 $b。 |
$a <= $b | 小于等于 | TRUE,如果 $a 小于或者等于 $b。 |
$a >= $b | 大于等于 | TRUE,如果 $a 大于或者等于 $b。 |
$a <=> $b | 太空船運(yùn)算符(組合比較符) | 當(dāng)$a小于、等于、大于$b時(shí) 分別返回一個(gè)小于、等于、大于0的integer 值。 PHP7開始提供。 |
$a ?? $b ?? $c | NULL 合并操作符 | 從左往右第一個(gè)存在且不為 NULL 的操作數(shù)。如果都沒有定義且不為 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 ?>
比較多種類型
運(yùn)算數(shù) 1 類型 | 運(yùn)算數(shù) 2 類型 | 結(jié)果 |
---|---|---|
null 或 string | string | 將 NULL 轉(zhuǎn)換為 "",進(jìn)行數(shù)字或詞匯比較 |
bool 或 null | 任何其它類型 | 轉(zhuǎn)換為 bool,F(xiàn)ALSE < TRUE |
object | object | 內(nèi)置類可以定義自己的比較,不同類不能比較,相同類和數(shù)組同樣方式比較屬性(PHP 4 中),PHP 5 有其自己的說明 |
string,resource 或 number | string,resource 或 number | 將字符串和資源轉(zhuǎn)換成數(shù)字,按普通數(shù)學(xué)比較 |
array | array | 具有較少成員的數(shù)組較小,如果運(yùn)算數(shù) 1 中的鍵不存在于運(yùn)算數(shù) 2 中則數(shù)組無法比較,否則挨個(gè)值比較(見下例) |
object | 任何其它類型 | object 總是更大 |
array | 任何其它類型 | array 總是更大 |
PHP 支持一個(gè)錯(cuò)誤控制運(yùn)算符:@。當(dāng)將其放置在一個(gè) PHP 表達(dá)式之前,該表達(dá)式可能產(chǎn)生的任何錯(cuò)誤信息都被忽略掉。
This operator is affectionately known by veteran phpers as the stfu(shut the fuck up) operator。執(zhí)行運(yùn)算符(shell命令)
反引號(hào)(``)。注意這不是單引號(hào)!PHP 將嘗試將反引號(hào)中的內(nèi)容作為 shell 命令來執(zhí)行,并將其輸出信息返回(即,可以賦給一個(gè)變量而不是簡(jiǎn)單地丟棄到標(biāo)準(zhǔn)輸出)。使用反引號(hào)運(yùn)算符“`”的效果與函數(shù) shell_exec() 相同。
$output"; ?>
Note: 與其它某些語言不同,反引號(hào)不能在雙引號(hào)字符串中使用。遞增/遞減運(yùn)算符(字符遞增)
PHP 支持 C 風(fēng)格的前/后遞增與遞減運(yùn)算符。
Note: 遞增/遞減運(yùn)算符不影響布爾值。遞減 NULL 值也沒有效果,但是遞增 NULL 的結(jié)果是 1。
例子 | 名稱 | 效果 |
---|---|---|
++$a | 前加 | $a 的值加一,然后返回 $a。 |
$a++ | 后加 | 返回 $a,然后將 $a 的值加一。 |
--$a | 前減 | $a 的值減一, 然后返回 $a。 |
$a-- | 后減 | 返回 $a,然后將 $a 的值減一。 |
字符遞增:PHP 沿襲了 Perl 的習(xí)慣,而非 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"這個(gè)字符:
$a="9D9"; var_dump(++$a); => string(3) "9E0" but counting onwards from there $a="9E0"; var_dump(++$a); => float(10)邏輯運(yùn)算符(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,但不同時(shí)是。 |
! $a | Not(邏輯非) | TRUE,如果 $a 不為 TRUE。 |
$a && $b | And(邏輯與)短路 | TRUE,如果 $a 和 $b 都為 TRUE。 |
$a||$b | Or(邏輯或)短路 | TRUE,如果 $a 或 $b 任一為 TRUE。 |
字符串運(yùn)算符
.
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.
數(shù)組運(yùn)算符(慎用+)例子 | 名稱 | 效果 |
---|---|---|
$a + $b | 聯(lián)合 | $a 和 $b 的聯(lián)合。 |
$a == $b | 相等 | 如果 $a 和 $b 具有相同的鍵/值對(duì)則為 TRUE。 |
$a === $b | 全等 | 如果 $a 和 $b 具有相同的鍵/值對(duì)并且順序和類型都相同則為 TRUE。 |
$a != $b | 不等 | 如果 $a 不等于 $b 則為 TRUE。 |
$a <> $b | 不等 | 如果 $a 不等于 $b 則為 TRUE。 |
$a !== $b | 不全等 | 如果 $a 不全等于 $b 則為 TRUE。 |
+ 運(yùn)算符把右邊的數(shù)組元素附加到左邊的數(shù)組后面,兩個(gè)數(shù)組中都有的鍵名,則只用左邊數(shù)組中的,右邊的被忽略。
Example #1 比較數(shù)組
"banana", "0" => "apple"); var_dump($a == $b); // bool(true) var_dump($a === $b); // bool(false) ?>
Example #2 合并數(shù)組(+慎用)
//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 )類型運(yùn)算符
instanceof:
1.確定一個(gè) PHP 變量是否屬于某一類 class 的實(shí)例。
2.確定一個(gè)變量是不是繼承自某一父類的子類的實(shí)例。
3.確定一個(gè)變量是不是實(shí)現(xiàn)了某個(gè)接口的對(duì)象的實(shí)例。
雖然 instanceof 通常直接與類名一起使用,但也可以使用對(duì)象或字符串變量。
Example #5 對(duì)其它變量使用 instanceof
如果被檢測(cè)的變量不是對(duì)象,instanceof 并不發(fā)出任何錯(cuò)誤信息而是返回 FALSE。不允許用來檢測(cè)常量。
Example #6 用 instanceof 檢測(cè)其它變量
運(yùn)算符優(yōu)先級(jí)
結(jié)合方向 | 運(yùn)算符 | 附加信息 |
---|---|---|
無 | clone new | clone 和 new |
左 | [ | array() |
右 | ** | 算術(shù)運(yùn)算符 |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 類型和遞增/遞減 |
無 | instanceof | 類型 |
右 | ! | 邏輯運(yùn)算符 |
左 | * / % | 算術(shù)運(yùn)算符 |
左 | + - . | 算術(shù)運(yùn)算符和字符串運(yùn)算符 |
左 | << >> | 位運(yùn)算符 |
無 | < <= > >= | 比較運(yùn)算符 |
無 | == != === !== <> <=> | 比較運(yùn)算符 |
左 | & | 位運(yùn)算符和引用 |
左 | ^ | 位運(yùn)算符 |
左 | | | 位運(yùn)算符 |
左 | && | 邏輯運(yùn)算符 |
左 | || | 邏輯運(yùn)算符 |
左 | ?? | 比較運(yùn)算符 |
左 | ? : | ternary |
right | = += -= *= **= /= .= %= &=|=^= <<= >>= | 賦值運(yùn)算符 |
左 | and | 邏輯運(yùn)算符 |
左 | xor | 邏輯運(yùn)算符 |
左 | or | 邏輯運(yùn)算符 |
1] ?>
and/or優(yōu)先級(jí)特別低:
Because "and/or" have lower priority than "=" but "||/&&" have higher.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28143.html
摘要:類與對(duì)象基本概念如果在之后跟著的是一個(gè)包含有類名的字符串,則該類的一個(gè)實(shí)例被創(chuàng)建。如果該類屬于一個(gè)名字空間,則必須使用其完整名稱。如果一個(gè)類被聲明為,則不能被繼承。命名空間通過關(guān)鍵字來聲明。 類與對(duì)象 基本概念 new:如果在 new 之后跟著的是一個(gè)包含有類名的字符串,則該類的一個(gè)實(shí)例被創(chuàng)建。如果該類屬于一個(gè)名字空間,則必須使用其完整名稱。 Example #3 創(chuàng)建一個(gè)實(shí)例 ...
摘要:的語法和其它流程控制結(jié)構(gòu)相似部分允許設(shè)定代碼段的行為。返回值在失敗時(shí)返回并且發(fā)出警告。當(dāng)一個(gè)函數(shù)是有條件被定義時(shí),必須在調(diào)用函數(shù)之前定義。有條件的函數(shù)不能在此處調(diào)用函數(shù),因?yàn)樗€不存在,但可以調(diào)用函數(shù)。 流程控制 PHP 提供了一些流程控制的替代語法,包括 if,while,for,foreach 和 switch。替代語法的基本形式是把左花括號(hào)({)換成冒號(hào)(:),把右花括號(hào)(})分...
摘要:非法下標(biāo)類型會(huì)產(chǎn)生一個(gè)級(jí)別錯(cuò)誤。用負(fù)數(shù)下標(biāo)寫入字符串時(shí)會(huì)產(chǎn)生一個(gè)級(jí)別錯(cuò)誤,用負(fù)數(shù)下標(biāo)讀取字符串時(shí)返回空字符串。浮點(diǎn)數(shù)也會(huì)被轉(zhuǎn)換為整型,意味著其小數(shù)部分會(huì)被舍去。 Boolean 當(dāng)轉(zhuǎn)換為 boolean 時(shí),以下值被認(rèn)為是 FALSE:布爾值 FALSE 本身整型值 0(零)浮點(diǎn)型值 0.0(零)空字符串,以及字符串 0不包括任何元素的數(shù)組[]特殊類型 NULL(包括尚未賦值的變量)從...
摘要:學(xué)習(xí)至今一年有余,筆記積累挺多的,也挺雜的,寫篇文章整理一下吧?;A(chǔ)部分輸出文本的基礎(chǔ)指令和。函數(shù)內(nèi)部聲明的變量擁有作用域,只能在函數(shù)內(nèi)部進(jìn)行訪問。布爾型要指定一個(gè)布爾值,使用關(guān)鍵字或。 php學(xué)習(xí)至今一年有余,筆記積累挺多的,也挺雜的,寫篇文章整理一下吧。 php基礎(chǔ)部分 showImg(http://segmentfault.com/img/bVcWhR); PHP 輸出文本...
摘要:最近計(jì)劃把手冊(cè),認(rèn)真的先過一遍。語言參考類型新認(rèn)知強(qiáng)制轉(zhuǎn)換類型用。后期靜態(tài)綁定從這里開始語言參考生成器新認(rèn)知生成器汗水的核心是關(guān)鍵字。語言參考預(yù)定義變量超全局變量前一個(gè)錯(cuò)誤信息原始數(shù)據(jù)以上 showImg(https://segmentfault.com/img/remote/1460000010147451); 最近計(jì)劃把 PHP手冊(cè),認(rèn)真的先過一遍。記錄一些以前不知道,不明確的知識(shí)...
閱讀 3576·2021-10-15 09:43
閱讀 3496·2021-09-02 15:21
閱讀 2207·2021-08-11 11:23
閱讀 3247·2019-08-30 15:54
閱讀 1938·2019-08-30 13:54
閱讀 3208·2019-08-29 18:35
閱讀 679·2019-08-29 16:58
閱讀 1750·2019-08-29 12:49