成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

php易錯(cuò)筆記-變量,常量,運(yùn)算符

Bamboy / 3482人閱讀

摘要:與變量不同,常量不存在可變常量,如果常量名是動(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)算符建議和二進(jìn)制整形(如0b100110)結(jié)合使用。
比較運(yùn)算符
例子 名稱 結(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 總是更大
錯(cuò)誤控制運(yùn)算符

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

相關(guān)文章

  • php易錯(cuò)筆記-類與對(duì)象,命名空間

    摘要:類與對(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í)例 ...

    MartinHan 評(píng)論0 收藏0
  • php易錯(cuò)筆記-流程控制,函數(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)(})分...

    mrcode 評(píng)論0 收藏0
  • php易錯(cuò)筆記-類型

    摘要:非法下標(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(包括尚未賦值的變量)從...

    tinyq 評(píng)論0 收藏0
  • php學(xué)習(xí)筆記(一)基礎(chǔ)部分

    摘要:學(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 輸出文本...

    wapeyang 評(píng)論0 收藏0
  • PHP 手冊(cè)閱讀筆記 - 語言參考篇

    摘要:最近計(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í)...

    Developer 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<