二、變量
? 舉例子
? 現(xiàn)實(shí)生活中我們?cè)诩依飼?huì)用柜子來(lái)存放我們的衣服,包,書籍等等其他的東西
? 那么我們?cè)诰幊陶Z(yǔ)言里面是沒有 衣服,包,書籍這些概念的!
? 我們只有數(shù)據(jù)!那么我們?cè)诔绦蛑羞@些數(shù)據(jù)是存放在哪里呢?這個(gè)就是存放在我們的變量里。
? 變量是用于臨時(shí)存儲(chǔ)值得容器。變量在任何編程語(yǔ)言中都是核心的地位!
? 另外PHP腳本語(yǔ)言是一種弱類型語(yǔ)言,和其他語(yǔ)言不同的是變量或者常量的數(shù)據(jù)類型由程序的上下文決定。
1.變量的聲明
聲明:說(shuō)白了就是實(shí)現(xiàn)告知,通知!
在我們的一些編程語(yǔ)言里面比如c語(yǔ)言 使用變量之前要事先通知,事先聲明一下!
注意:在php程序里面 使用變量之前是不需要聲明的!
-
變量用于存儲(chǔ) 數(shù)字、文本字符串 或者數(shù)組這些數(shù)據(jù)!
? $變量名
? $變量名=數(shù)據(jù)(值)
? = 在數(shù)學(xué)里面是'等于'的意思,在我們的程序語(yǔ)言里面,它不是等于號(hào),而是 ' 賦值操作符 '
2.**變量的銷毀
? unset($變量名稱)
? $and1=1;
? unset(
and變量
? echo $and1;
3.變量的命名規(guī)則
? a.變量名是嚴(yán)格區(qū)分大小寫的
?
NAME* $Name* 都是不同的變量
? b. 字母或者下劃線開頭
? 后面接任意數(shù)量的字母數(shù)字下劃線
?
? 錯(cuò)誤的命名方式:
? $1name 錯(cuò)誤點(diǎn):以數(shù)字開頭了
? $n ame錯(cuò)誤點(diǎn): 中間有空白字符
總結(jié)一下:變量名只能包括 字母 數(shù)字 下劃線 并且必須以字母或者下劃線開頭!
? 最好不要用一些關(guān)鍵字作為變量名(因?yàn)樵谄渌木幊陶Z(yǔ)言是完全不被允許的),eg:and、this...
? c.PHP中有一些標(biāo)識(shí)符是系統(tǒng)定義的,也成為關(guān)鍵字,是PHP語(yǔ)言的組成部分,因此不能使用它們中任何一個(gè)作為常量函數(shù)名或者類名。但是和其他語(yǔ)言不同的是可以在PHP中作為變量名稱使用,不過(guò)這樣容易混淆,所以最好還是不要用PHP的關(guān)鍵字作為變量名稱。
? d.可變變量
? 一個(gè)變量的名字可以動(dòng)態(tài)的設(shè)置和使用
? $name = 'wangshuailong';
? $$name='name';
? echo $name;
? echo $wangshuailong;
? 了解一下即可
? e.變量引用賦值
? 引用賦值可以簡(jiǎn)單的理解為給變量起了個(gè)別名
//變量的引用 $a=1000; //$b=$a;//相當(dāng)于把$a的值,復(fù)制一份再給了$b這個(gè)變量 $b=&$a;//相當(dāng)于給$a起了一個(gè)別名,操作其中任何一個(gè),都會(huì)影響另外一個(gè)變量的值 echo $a; echo $b;? 暫時(shí)了解一下
變量類型
概述:變量類型是指保存在該變量中的數(shù)據(jù)類型
? 變量比喻成柜子 衣服,書籍
? PHP對(duì)變量類型看的比較淡,所以我們這節(jié)課就比較輕松
一、變量類型簡(jiǎn)介
使用var_dump(變量名)可以輸出變量的類型;
? 1.bool(布爾型)
//布爾類型 $a=true; echo $a; var_dump($a); //往變量里面存儲(chǔ)true或者false,那么這個(gè)類型就是布爾類型了? 這個(gè)是最簡(jiǎn)單的類型,布爾型表達(dá)了true或false,即真或假。
? 以下值被認(rèn)為是false,其他的值都是被認(rèn)為是true
? a、布爾值false
? b、0
? c、浮點(diǎn)型0.0
? d、空白字符串和字符串0
? e、沒有成員的數(shù)組
? f、NULL
- int (整型)
? 往變量里面存整數(shù),那么這個(gè)變量就是整型變量啦!
3.float(浮點(diǎn)型,也稱double)
? 往變量里面存小數(shù),那么這個(gè)變量就是浮點(diǎn)型數(shù)據(jù)了!
?
$a=1.1; var_dump($a);? 4.String (字符串)
? 字符串是一系列的字符組成串在一起
? 有三種定義的方式,單引號(hào),雙引號(hào),定界符
? 單引號(hào)
? 注意,在單引號(hào)括起來(lái)的字符串中不能再包含單引號(hào),如果實(shí)在要用單引號(hào)那么就需要用反斜杠()轉(zhuǎn)義
//字符串 $b='cedvsevvt\'rht'; echo $b; var_dump($b); echo $b;? 雙引號(hào)
? 雙引號(hào)括起來(lái)
? 其中的變量名會(huì)被變量值所替代,即PHP會(huì)解析雙引號(hào)的變量
? 定界符
? <<<之后提供一個(gè)標(biāo)示符,然后是字符串的內(nèi)容 最后是同樣的標(biāo)示符表示結(jié)束
? 注意,結(jié)束標(biāo)示符之后必須接;不可以用其他的任何字符
? 標(biāo)示符的命名規(guī)則 字母數(shù)字下劃線 并且不能以數(shù)字開始
$c=200; $d=<<<ttt venivkgenv ttt; var_dump($d); echo $d;5.array(數(shù)組)
? 數(shù)組是PHP中一種重要的符合數(shù)據(jù)類型
? 前面介紹的類型只能存入一個(gè)數(shù)據(jù),而數(shù)組可以存放多個(gè)數(shù)據(jù),并且可以存入任何類型的數(shù)據(jù)
6.object(對(duì)象)
resource(資源)
-
Null
? null表示一個(gè)變量沒有值,表示空
? 將變量直接賦值為null
? 聲明的變量尚未被賦值
? 被unset函數(shù)銷毀的變量
常量
? 常量是一個(gè)簡(jiǎn)單的標(biāo)示符,如其名稱所暗示的,在我們PHP腳本執(zhí)行期間一個(gè)常量一旦被定義,就不能被改變或者取消定義,常量的作用域是全局,
? 常量只能包含bool,int,float,string類型的數(shù)據(jù)!
1.概念:
? 常量是用于臨時(shí)(只有在我們的程序的運(yùn)行過(guò)程中才存在)存儲(chǔ)值(數(shù)據(jù))的容器
? 常量是用于臨時(shí)(只有在我們的程序的運(yùn)行過(guò)程中才存在)存儲(chǔ)值(數(shù)據(jù))的容器
2.定義和使用*
? define()
? define(常量名稱)
? 常量的命名與變量類似,也遵循PHP標(biāo)識(shí)符的名稱規(guī)則,按照慣例常量標(biāo)識(shí)符總是大寫的
? define('MY_NAME','王帥龍')
? define()函數(shù)來(lái)檢查是否定義了某個(gè)常量
3.常量和變量的區(qū)別
? a.常量前面沒有美元符號(hào)($)
? b.常量只能用define()函數(shù)定義,不能通過(guò)賦值語(yǔ)句
? c.常量可以不用理會(huì)變量范圍的規(guī)則而在任何地方定義和使用
? d.常量一旦被定義就不能被重新定義或者取消定義
? e.常量的值只能是bool,int,float,string類型
4.預(yù)定義常量
? 預(yù)定義常量說(shuō)白了就是我們的php內(nèi)核已經(jīng)幫我們定義好了的常量;
? 其中預(yù)定義常量是以__開頭的,這些預(yù)定義常量我們又叫它魔術(shù)常量
? 代碼所在的位置不同他的值也是不同的,所以他叫魔術(shù)常量
八個(gè)常用的魔術(shù)常量
? http://php.net/manual/zh/language.constants.predefined.php
? 預(yù)定義的常量是不區(qū)分大小寫的
? 自定義的常量是嚴(yán)格區(qū)分大小寫的
運(yùn)算符
概念
? 說(shuō)白了就是一些符號(hào),這些符號(hào)可以將變量或者
? 運(yùn)算符對(duì)一個(gè)或者多個(gè)操作數(shù)(變量或者數(shù)值)執(zhí)行某種運(yùn)算
1.算術(shù)運(yùn)算符
//加法
$a=1;
$b=2;
$c=$a+$b;
echo $c;
?
//-有兩個(gè)意思,一個(gè)是減法,一個(gè)是取反
$a=1;
$b=-$a;
echo $b;
echo '<br/>'
echo $a;
注意:取反并不會(huì)影響到被取反本身的值
//++自增
//前++
$a=10;
++$a;
echo $a;
前++
當(dāng)在一個(gè)語(yǔ)句里面需要使用到被自增的值的時(shí)候,前++會(huì)先執(zhí)行自增,然后再返回自增之后的值
//后++
$b=10;
$b++;//echo $b;$b=$b+1;
echo $b;
后++
當(dāng)在一個(gè)語(yǔ)句里面需要使用到自增的變量的值的時(shí)候,后++會(huì)先返回變量的值然后再去執(zhí)行自增
$b=10;
++$b;//這種情況不需要用到自增變量值的時(shí)候,和后++無(wú)區(qū)別
echo $b;
//前--
$a=10;
$b=$a--;
echo $b;
//后--
$c=10;
$d=--$c;
echo $d;
注意:自增或者自減是對(duì)變量而言的
2.字符串運(yùn)算符
? PHP中的字符串運(yùn)算符只有一個(gè)英文句號(hào)(.),也叫連接運(yùn)算符
3.賦值運(yùn)算符
=
? 作用,把右邊的值賦給左邊的變量 左邊必須是變量
? 表達(dá)式是PHP最重要的基石。在PHP 中,幾乎所有的任何的東西都是一個(gè)表達(dá)式。簡(jiǎn)單卻最精確的 定義一個(gè)表達(dá)式的方式就是"任何有用的東西"。
? +=
? $a=1;
? $b=2;
? b;//
a+$b;
? echo $a;
4.比較運(yùn)算符
? 對(duì)操作數(shù)(按照比較運(yùn)算符的要求,規(guī)則)進(jìn)行比較
? 如果比較出的結(jié)果滿足比較運(yùn)算符的要求那么結(jié)果就是true(真,成立,滿足),否則就是false(假,不成立,不滿足)
? PHP中規(guī)定:
? 使用echo輸出布爾類型值得時(shí)候
? echo true; 他會(huì)在頁(yè)面中輸出1
? echo false;他會(huì)在頁(yè)面中什么都不輸出
? 規(guī)定的記住就好,所以說(shuō)我們?cè)跍y(cè)試的過(guò)程中如果要輸出布爾類型值得時(shí)候我們最好使用var_dump()來(lái)輸出更精確得結(jié)果!
? a.==值是否相等
? 如果值相等則就是true(真,成立)
? 如果值不相等那么就是flase(假,不成立)
? b.===全等(值要相等,類型也要相等)
? 如果兩邊操作數(shù)的值全等那么就是true否則就是false
$a=1;
$b=2;
//echo $a=$b;
var_dunmp($a==$b);//true
? c.!=值是否不相等
//如果兩邊操作數(shù)的值不相等那么就是true,否則就是false
$a=1;
$b=11;
var_dump($a!=$b);//true
? d.!==不全等
? 如果兩邊的操作數(shù)不全等那么就是true,否則就是false
$a=11;
$b='11';
var_dump($a==$b);//值相等
echo '<br/>';
var_dump($a===$b);//類型也相等
echo '<br/>';
var_dump($a!=$b);
$a=11;
$b='11';
var_dump($a!=$b);//flase
echo '<br/>';
var_dump($a!==$b);//true,$a不全等于$b
? e.< 小于
?
//比較兩邊操作數(shù),前面的是否小于后面的
$a=1;
$b=1;
var_dump($a<$b);//false,$a于$b這句話正確還是錯(cuò)誤
? f.>大于
$a=1;
$b=1;
var_dump($a<$b);
? g. <=小于等于
$a=1;
$b=1;
var_dump($a<=$b);//true
5.邏輯運(yùn)算符
? 概念:
? 對(duì)表達(dá)式進(jìn)行邏輯運(yùn)算,運(yùn)算出的結(jié)果是布爾類型的值(true,false)
? 要求:
? 參與邏輯運(yùn)算符的表達(dá)式的值是布爾類型的值,如果不是布爾類型的值會(huì)被自動(dòng)轉(zhuǎn)換稱布爾類型的值,然后再參與運(yùn)算。
? 1.邏輯與
? and 或者 &&(一假即假)
? 左右兩邊的表達(dá)式的值都為true的時(shí)候,運(yùn)算的結(jié)果就是true,否則只要其中一個(gè)為false,運(yùn)算的結(jié)果就是false
$a=true;
$b=true;
$a and $b;
echo $a && $b;
echo '<br/>';
var_dump($a && $b);
? 2.邏輯或(一真即真)
? or 或者 ||
? 左右兩邊的表達(dá)式只要有其中有一個(gè)是真的,那么運(yùn)算的結(jié)果就是真的。
$a=true;
$b=false;
echo $a || $b;
echo '<br/>';
var_dump($a||$b);
我們的程序語(yǔ)言設(shè)計(jì)者認(rèn)為:
? 只要有邏輯運(yùn)算符(邏輯與,邏輯或)那么運(yùn)算結(jié)果就是一個(gè)true或者false
? 那個(gè)這個(gè)整個(gè)運(yùn)行過(guò)程就不重要了
? 當(dāng)然短路問(wèn)題并不會(huì)遇到太多,就算遇到也不會(huì)有什么影響
//短路問(wèn)題
$a=true;
$b=1;
$a && ++$b;
echo $b;//短路,上面的++$b被短路了
echo "<br/>";
//短路問(wèn)題
$a=true;
$b=1;
$a || ++$b;
echo $b;//短路,上面的++$b被短路了
? 3.邏輯異或(同者真,異者假)
? xor
? 運(yùn)算規(guī)則:
? 左右兩邊的表達(dá)式的值不一樣的時(shí)候結(jié)果就是true,如果一樣那么運(yùn)算結(jié)果就是false。
//邏輯異或
$a=true;
$b=true;
echo $a xor $b;
var_dump($a xor $b);
4.邏輯非
? 運(yùn)算規(guī)則
? 將原來(lái)表達(dá)式的值否定掉,原來(lái)true,那么結(jié)果就是false
? 原來(lái)是false,那么結(jié)果就是true
6.位運(yùn)算符
7.其他運(yùn)算符
? a.? :
? 三元運(yùn)算符
? 格式:
? 表達(dá)式 1 ? 表達(dá)式2 :表達(dá)式3
? 如果表達(dá)式1的值位true,那么就執(zhí)行表達(dá)式2,否則就執(zhí)行表達(dá)式3
$a=false ? 10 : 20;
echo $a;
b.``
可以把系統(tǒng)命令放在里面執(zhí)行
涉及到跨平臺(tái)問(wèn)題所以用的很少
$a=`ipconfig`;
//echo iconv("GB2312","UTF-8",$a);亂碼設(shè)置
var_dump($a);
c.@
? 屏蔽表達(dá)式可能發(fā)生的錯(cuò)誤:
? echo @$a;
d.
e.
f.instanceof
g.運(yùn)算符的優(yōu)先級(jí)
? 優(yōu)先級(jí)的概念:
? 1+1-1*8
? 誰(shuí)的優(yōu)先級(jí)別高就算誰(shuí)
? 結(jié)合方向:
? 規(guī)定了從那個(gè)方向開始算的問(wèn)題
? 優(yōu)先級(jí)的概念只要知道一些基本的常見的就好了,因?yàn)槲覀冊(cè)趯?shí)際開發(fā)中幾乎沒有那么需要寫非常復(fù)雜的表達(dá)式。我們應(yīng)該去考慮先算誰(shuí),后算誰(shuí)的問(wèn)題。
? 優(yōu)先級(jí)歸納:
? 1.[無(wú)]遞增遞減
? 2.[右]邏輯非
? 3.[左]乘,除,取余
? 4.[左]加,減,字符串連接符
? 5.[無(wú)]包含大于或者小于號(hào)的比較運(yùn)算符
? 6.[無(wú)]不包含大于號(hào)或者小于號(hào)比較遠(yuǎn)的運(yùn)算符
? 7.[左]邏輯與&&
? 8.[左]邏輯或||
? 9.[左]? :
? 10.[右]賦值運(yùn)算符
? 11.[左]邏輯異或xor
括號(hào)的作用:
? 用圓括號(hào)可以將表達(dá)式里面的某一塊看成一塊整體
? 使用括號(hào)可以增強(qiáng)代碼的可讀性