《我的php學(xué)習(xí)第二十六天——PHP基礎(chǔ)語(yǔ)法,php運(yùn)算符》要點(diǎn):
本文介紹了我的php學(xué)習(xí)第二十六天——PHP基礎(chǔ)語(yǔ)法,php運(yùn)算符,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
在PHP程序中,變量和常量是經(jīng)常用到的
PHP是操作數(shù)據(jù),數(shù)據(jù)在靜態(tài)的時(shí)候是放到文件或者數(shù)據(jù)庫(kù)中,當(dāng)程序操作數(shù)據(jù)的時(shí)候,數(shù)據(jù)是以變量或者常量的形式存在于內(nèi)存.
在真實(shí)的項(xiàng)目環(huán)境中,只有數(shù)據(jù)操作是不夠的.還應(yīng)該有很多業(yè)務(wù)邏輯,就是對(duì)數(shù)據(jù)進(jìn)行判斷.體現(xiàn)在程序中就是各種表達(dá)式.
表達(dá)式:凡是有返回值的語(yǔ)句都稱之為表達(dá)式
$a = 10;
$a > 10;
Php中運(yùn)算符有:算術(shù)運(yùn)算符,邏輯運(yùn)算符,比較運(yùn)算符,賦值運(yùn)算符,位運(yùn)算符,三元運(yùn)算符,錯(cuò)誤抑制符,連接運(yùn)算符,自操作運(yùn)算符
算術(shù)運(yùn)算符:+,-,*,/,%
算術(shù)運(yùn)算符是用來進(jìn)行簡(jiǎn)單的數(shù)學(xué)計(jì)算的.
模運(yùn)算的原理:取余運(yùn)算,獲得兩個(gè)數(shù)相除之后的余數(shù).
錯(cuò)誤抑制符:@,表示抑制錯(cuò)誤的輸出,示例在上圖
賦值運(yùn)算符:=,+=,-=,*=,/=,%=,.=
賦值運(yùn)算符是改變變量的值,是將運(yùn)算符右邊的結(jié)果賦值給左邊.
+=,-=,*=,/=,%=
$a += 1; <============> $a = $a + 1;
注意:/=后面不能跟0
邏輯運(yùn)算符
指的是當(dāng)多個(gè)條件并存的時(shí)候,找出其中一些關(guān)聯(lián).將多個(gè)條件一起參與運(yùn)算的時(shí)候,就需要使用邏輯運(yùn)算符.
邏輯運(yùn)算符:&&,||,!
$a = true;
$b = false;
&&:表示且的意思,$a && $b,需要a和b同時(shí)為真的時(shí)候結(jié)果才為真,其中如果有任意一個(gè)不為真則結(jié)果假
||:表示或的意思,$a || $b,表示a和b中只要有一個(gè)結(jié)果為真,那么整個(gè)結(jié)果則為真,a和b同時(shí)為假的時(shí)候才返回假
!:邏輯非,表示對(duì)一個(gè)布爾結(jié)果取反,!$a,表示,如果a為真,則最終結(jié)果是假,如果a為假,則整個(gè)結(jié)果為真
邏輯運(yùn)算符又稱之為短路運(yùn)算符
如果在第一個(gè)條件已經(jīng)能夠判斷最終結(jié)果的情況下,不會(huì)在向下去判斷其他的元素.
$a = true;
$b = false;
Var_dump($a && $b);//從左往右判斷整個(gè)表達(dá)式,先判斷$a,是true但是不能代表整個(gè)表達(dá)式的結(jié)果,所以還需要繼續(xù)判斷,判斷$b,為false,所以整個(gè)結(jié)果為false
Var_dump($a || $b);//先判斷$a,true,這個(gè)時(shí)候因?yàn)槭腔蜻\(yùn)算,只要其中有一個(gè)為true,那么整個(gè)結(jié)果為true,所以當(dāng)?shù)谝粋€(gè)條件為true的時(shí)候,已經(jīng)可以得到整個(gè)表達(dá)式的結(jié)果,所以不需要判斷$b,直接返回true
&&可以使用and
||可以使用or
在PHP中大部分使用邏輯運(yùn)算符的時(shí)候,使用是符號(hào),而不是單詞;而在mysql中大部分的時(shí)候使用的是單詞而不是符號(hào)
比較運(yùn)算符
比較運(yùn)算符是用來判斷多個(gè)值之間的關(guān)系
比較運(yùn)算符:>,>=,<,<=,==,===,!=,!==
<,<=,>,>=,==,!=,通常是用來比較大小的
===,!==,用來比較類型
注意:
在進(jìn)行比較的時(shí)候,系統(tǒng)會(huì)對(duì)數(shù)據(jù)進(jìn)行自動(dòng)轉(zhuǎn)換(字符串與數(shù)值進(jìn)行比較的時(shí)候,會(huì)將字符串轉(zhuǎn)換成數(shù)值之后,再進(jìn)行比較)
===不單要求值大小一致,要求值對(duì)應(yīng)的數(shù)據(jù)類型完全一致.
連接運(yùn)算符
將兩個(gè)或者多個(gè)數(shù)據(jù)進(jìn)行連接,指的是字符串的拼接
連接運(yùn)算符只有一個(gè):.
$a = ‘a(chǎn)bc’;
$b = ‘ok’;
$c = $a . $b; //將a變量的值與b變量的值先進(jìn)行連接,然后再賦值給c變量
字符串的賦值運(yùn)算
$a .= $b;
$a = $a . $b;
先運(yùn)算$a . $b = ‘a(chǎn)bc’ . ‘ok’ = ‘a(chǎn)bcok’;
再賦值$a = ‘a(chǎn)bcok’;
注意:使用.號(hào)的時(shí)候,不論之前變量的類型是什么,都會(huì)最終變成字符類型.
自操作運(yùn)算符
自己操作自己的運(yùn)算符
自操作運(yùn)算符:++,--
++:自己對(duì)自己+1
--:自己對(duì)自己-1
自操作運(yùn)算符分為兩類:前置自操作,后置自操作
$a = 10;
$a++; //后置自操作
++$a; //前置自操作
$a = 10;
$d = 10;
$b = ++$a; //$a = $a + 1;$b = $a;
$c = $d++; //$c = $d;$d = $d + 1;
前置++:先對(duì)變量本身進(jìn)行自加1運(yùn)算,然后再將整個(gè)值賦值給其他變量
后置++:先將變量本身的值賦值給其他變量,然后再對(duì)自己進(jìn)行+1運(yùn)算
后置自操作原理
$a = 10;
$b = $a++;
等價(jià)于
$b = $a; //1 實(shí)際上是2
$a = $a + 1; //2 實(shí)際上是1
原因:++運(yùn)算符的優(yōu)先級(jí)比 = 高
自操作運(yùn)算符,通常用到循環(huán)變量的控制
For($i = 0;$i < 10;$i++);while($i < 100){++$i;}
有興趣
$a = 10;
$b = &$a;
$b = $a++ + $a++’
$c = ++$a + ++$a;
三元運(yùn)算符
也叫三目運(yùn)算,是因?yàn)閰⑴c運(yùn)算的表達(dá)式有三個(gè).
語(yǔ)法:$a ? $b : $c
如果$a為真,則執(zhí)行$b
如果$a為假,則執(zhí)行$c
三元運(yùn)算符完全可以使用if else替代,所以說三目運(yùn)算是對(duì)簡(jiǎn)單的if else的一個(gè)簡(jiǎn)化
位運(yùn)算符
電腦最小單位是位,bit
一個(gè)字節(jié)有8個(gè)bit
所有的數(shù)據(jù)存儲(chǔ)在電腦里,都是以二進(jìn)制存在
$a = 2; //整型,占四個(gè)字節(jié)
十進(jìn)制轉(zhuǎn)二進(jìn)制
數(shù)據(jù)在電腦內(nèi)存里的二進(jìn)制表示
位運(yùn)算指對(duì)具體內(nèi)存的具體位進(jìn)行操作.
位運(yùn)算符:&,|,~,^,<<,>>
&:按位與,當(dāng)兩個(gè)位的值同時(shí)為1的時(shí)候,結(jié)果才為1,否則結(jié)果為0
00010001 17
&
11111110 254
=
00010000 16
|:按位或,當(dāng)兩個(gè)位的值只要有一個(gè)為1的時(shí)候,結(jié)果就是1,否則為0
00010001 17
|
11111110 254
=
11111111 255
~:按位取反,指的是如果當(dāng)前位為0,則變成1,如果是1則變成0
00010001 17
~
11101110 238
有符號(hào)和無符號(hào):PHP中默認(rèn)的整型都是有符號(hào)類型,系統(tǒng)會(huì)在整數(shù)的第一位當(dāng)做符號(hào)位,其中0表示整數(shù),1表示負(fù)數(shù)
原碼反碼補(bǔ)碼
系統(tǒng)為了解決正0和負(fù)0不一致的情況,所以設(shè)計(jì)了原碼反碼補(bǔ)碼
原碼:指的是將一個(gè)數(shù)值按照其符號(hào)轉(zhuǎn)變成的二進(jìn)制碼
2 00000010
-2 10000010
正負(fù)數(shù)的原碼區(qū)別在于符號(hào)位的不同
反碼:指的是將符號(hào)位除外,其他的位取反得到的結(jié)果
正數(shù)的原碼和反碼一致
2 00000010
-2 111111101
補(bǔ)碼:指的是在反碼的基礎(chǔ)上+1
正數(shù)的原碼,反碼,補(bǔ)碼都是一致的
2 00000010
-2 111111110
注意:
正數(shù)在內(nèi)存里的存儲(chǔ)結(jié)構(gòu)就是其二進(jìn)制對(duì)應(yīng)的編碼
負(fù)數(shù)在內(nèi)存里存儲(chǔ)結(jié)構(gòu)對(duì)應(yīng)的是負(fù)數(shù)的補(bǔ)碼
正2取反的結(jié)果是-3
正數(shù)原碼反碼補(bǔ)碼一致,只要從二進(jìn)制轉(zhuǎn)化成十進(jìn)制即可
負(fù)數(shù)的保存形式是補(bǔ)碼,如果要得到負(fù)數(shù)的結(jié)果,需要把補(bǔ)碼轉(zhuǎn)化成原碼之后,再進(jìn)行二進(jìn)制轉(zhuǎn)十進(jìn)制(符號(hào)位除外)
系統(tǒng)保存正負(fù)數(shù)的最大值區(qū)別
^:按位異或,如果兩位不一樣則返回1,如果兩位一樣就返回0
00010001 17
^
11111110 254
=
11101111
<<:左移運(yùn)算,將內(nèi)存對(duì)應(yīng)的位向左移動(dòng)一位,右邊補(bǔ)0,每次左移使得結(jié)果乘以2
00010001 17
<<
00100010 34
>>:右移運(yùn)算,將內(nèi)存賭贏的位向右移動(dòng)一位,左邊補(bǔ)0,每次右移是的結(jié)果除2;
00010001 17
>>
00001000 8
Heredoc對(duì)應(yīng)雙引號(hào)
$str = <<< EOT
//內(nèi)容
//能夠解析變量
EOT;
Nowdoc對(duì)應(yīng)單引號(hào)
$str = <<< ‘EOT’
//內(nèi)容
//不能解析變量
EOT;
維易PHP培訓(xùn)學(xué)院每天教你實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/6504.html