基本語(yǔ)法

二、變量

? 舉例子
? 現(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(and1);//銷毀and變量

    ? echo $and1;

    3.變量的命名規(guī)則

    ? a.變量名是嚴(yán)格區(qū)分大小寫的

    ? name* *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

    1. 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ì)象)

    1. resource(資源)

    2. 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;

? a+=b;//a=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)代碼的可讀性

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容