PHP基礎(chǔ)

1. PHP引用變量

  • 什么是php引用變量,在PHP當(dāng)中幻枉,用什么符號(hào)定義引用變量势誊?
    答:引用變量:在PHP中引用意味著用不同的名字訪問同一個(gè)變量?jī)?nèi)容撩笆。
    定義方式:使用&符號(hào)

  • 延伸 php 引用原理

// COW Copy On Write  (寫時(shí)復(fù)制)
//有一定經(jīng)驗(yàn)的程序員應(yīng)該都知道Copy On Write(寫時(shí)復(fù)制)使用了“[引用計(jì)數(shù)](https://baike.baidu.com/item/%E5%BC%95%E7%94%A8%E8%AE%A1%E6%95%B0)”(reference counting)苗傅,會(huì)有一個(gè)變量用于保存引用的數(shù)量抒线。當(dāng)?shù)谝粋€(gè)類構(gòu)造時(shí),string的[構(gòu)造函數(shù)](https://baike.baidu.com/item/%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0)會(huì)根據(jù)傳入的參數(shù)從堆上分配內(nèi)存渣慕,當(dāng)有其它類需要這塊內(nèi)存時(shí)嘶炭,這個(gè)計(jì)數(shù)為自動(dòng)累加,當(dāng)有類析構(gòu)時(shí)逊桦,這個(gè)計(jì)數(shù)會(huì)減一眨猎,直到最后一個(gè)類析構(gòu)時(shí),此時(shí)的引用計(jì)數(shù)為1或是0强经,此時(shí)睡陪,程序才會(huì)真正的Free這塊從堆上分配的內(nèi)存。


//memory_get_usage();獲取內(nèi)存使用量
$a=range(0,100);
var_dump(memory_get_usage());//376472  //一個(gè)內(nèi)存空間 refcount=1 is_ref=0

$b=$a;
var_dump(memory_get_usage());//376536  //一個(gè)內(nèi)存空間 refcount=2 is_ref=0

$a=range(0,100);
var_dump(memory_get_usage());//380872 兩個(gè)內(nèi)存空間 refcount=1 is_ref=0

$b=&$a;  
var_dump(memory_get_usage());//376752 //一個(gè)內(nèi)存空間 refcount=1 is_ref=1

unset($a);//unset只會(huì)取消引用匿情,不會(huì)銷毀空間
var_dump(memory_get_usage());//376752

unset($b);
var_dump(memory_get_usage());//373552

class 特性

class  Person{
    public $name='張三';
}
$obj1=new Person();
var_dump($obj1);//張三
$obj2=$obj1;
var_dump($obj1);//張三
var_dump($obj2);//張三
$obj2->name='李四';
var_dump($obj1);//李四
var_dump($obj2);//李四
//結(jié)論:對(duì)象本身就是引用傳遞

真題


image.png

第一次循環(huán) abc
第二次循環(huán) bbc
第三次循環(huán) bcc

2. 常量及數(shù)據(jù)類型

PHP中字符串可以使用哪三種方式定義兰迫,他們的區(qū)別是什么?

  • 三種方式 單引號(hào) 雙引號(hào) heredoc和newdoc
  • 區(qū)別
    1.單引號(hào)不能解析變量
    2.單引號(hào)不能解析轉(zhuǎn)義字符码秉,只能解析單引號(hào)和反斜線本身
    3.變量和變量逮矛、變量和字符串鸡号、字符串與字符串之間可以用.連接
    4.雙引號(hào)可以解析變量转砖,變量可以使用特殊字符{}包含
    5.雙引號(hào)可以解析所有轉(zhuǎn)義字符
    6.也可以使用.連接
    7.單引號(hào)效率更高
    8.heredoc類似雙引號(hào)
    9.newdoc類似單引號(hào)
    10.heredoc和newdoc都用來處理大文本

* 延伸

1.數(shù)據(jù)類型
三大數(shù)據(jù)類型(標(biāo)量、復(fù)合、特殊)

1.1 浮點(diǎn)類型不能用于比較運(yùn)算中

1.2 flase的七中情況

   0   0.0   ' '    '0'   false   array()   null
1.3 PHP中超全局?jǐn)?shù)組

  $GLOBALS;
  $_SERVER;
  $_FILES;
  $_GET;
  $_POST;
  $_COOKIE;
  $_ENV;
  $_REQUEST;
  $_SESSION;

重點(diǎn)記憶

$_SERVER['SERVER_ADDR'];//服務(wù)器端ip地址
$_SERVER['REMOTE_ADDR'];//客戶端ip地址
$_SERVER['SERVER__NAME'];//請(qǐng)求時(shí)間
$_SERVER['QUERY_STRING'];//?后面的
$_SERVER['HTTP_REFERER'];//上級(jí)請(qǐng)求頁面
$_SERVER['HTTP_USER_AGENT'];//頭信息中的user-agent信息
$_SERVER['REQUEST_URI'];//全
$_SERVER['PATH_INFO'];//路由

1.4 NULL的三種情況
直接賦值為NULL府蔗、未定義的變量晋控、unset銷毀的變量
1.5常量
1.5.1 定義方式
const define
1.5.2 區(qū)別

    const更快,是語言結(jié)構(gòu)姓赤,define是函數(shù)
    define不能用于類常量的定義赡译,const可以
    常量一經(jīng)定義都不能被修改和被刪除

1.6 預(yù)定義常量
      __FILE__;//文件路徑名和文件名稱
      __LINE__;//所在行號(hào)
      __DIR__;//所在目錄
      __FUNCTION__;//所在函數(shù)體 函數(shù)名稱
      __CLASS__;//類名
      __TRAIT__;//trait名稱
      __METHOD__;//方法名
      __NAMESPACE__;//命名空間

3.PHP運(yùn)算符

真題

  • foo()和@foo()之間的區(qū)別
    php支持一個(gè)錯(cuò)誤運(yùn)算符:@ 當(dāng)將其放置在一個(gè)PHP表達(dá)式之前,該表達(dá)式可能產(chǎn)生的任何錯(cuò)誤信息都被忽略掉
  • 運(yùn)算符優(yōu)先級(jí)


    運(yùn)算符優(yōu)先級(jí)
  • ==和===的區(qū)別
    ===是全等于 數(shù)據(jù)類型也需要一致
  • 遞增遞減運(yùn)算符


  • 邏輯運(yùn)算符
    短路作用和優(yōu)先級(jí)不同


    image.png
  • 真題
$bool=false;
echo $bool++;
var_dump($bool++);//false;


$bool=true;
echo $bool++;//1
var_dump($bool++);//true;
image.png

4.流程控制

image.png

image.png

image.png
  • 真題
    PHP中如何優(yōu)化多個(gè)if...eleif 語句不铆?
    將可能性大的放前面
    考慮使用switch..case

7 會(huì)話控制

會(huì)話控制

為什么要使用會(huì)話控制技術(shù)

http是無狀態(tài)的 無法記錄用戶的狀態(tài)

會(huì)話控制技術(shù) 用來跟蹤用戶的請(qǐng)求
請(qǐng)求一次后蝌焚,保存狀態(tài) 下一次再請(qǐng)求時(shí) 就有記錄了

實(shí)現(xiàn)方式

GET值傳遞

cookie

設(shè)置cookie

setcookie(name,value,expire,path,domain,secure)
name 鍵value 值
expire 過期時(shí)間path 路徑
domain 域名secure 安全相關(guān)

獲取cookie
$_COOKIE[key]

刪除cookie
setcookie($name,'',time()-1);

cookie優(yōu)缺點(diǎn)
1.不會(huì)占用服務(wù)器資源
2.存在客戶端不安全
3.用戶可以禁用cookie

session優(yōu)缺點(diǎn)
1.session基于cookie 如果cookie被禁用 可以通過值傳遞的方式傳輸
2.存儲(chǔ)在服務(wù)器

HTTP 狀態(tài)碼

1xx 信息類狀態(tài)碼 表示接收的請(qǐng)求正在處理

2xx 請(qǐng)求處理狀態(tài)

200     成功
204     不含實(shí)體的主體部分
206     部分的內(nèi)容

3xx 重定向

301     永久重定向
302     臨時(shí)重定向
303     
304 
307 

4xx 客戶端錯(cuò)誤

400
401
403
404

5xx 服務(wù)端錯(cuò)誤

500
503 

OSI 七層模層

第一層     物理層                 建立維護(hù)斷開物理連接
第二層     數(shù)據(jù)鏈路層           建立邏輯連接、進(jìn)行硬件地址尋址誓斥、差錯(cuò)校驗(yàn)等功能
第三層     網(wǎng)絡(luò)層             進(jìn)行邏輯地址尋址只洒,實(shí)現(xiàn)不同網(wǎng)絡(luò)之間的路徑選擇
第四層     傳輸層             定義傳輸數(shù)據(jù)的協(xié)議端口號(hào),以及流控和差錯(cuò)校驗(yàn) TCP劳坑、UDP 數(shù)據(jù)包一旦離開網(wǎng)卡即 進(jìn)入網(wǎng)絡(luò)傳輸層
第五層     會(huì)話層             建立管理終止會(huì)話
第六層     表示層             數(shù)據(jù)的表示安全和壓縮
第七層     應(yīng)用層             網(wǎng)絡(luò)服務(wù)與應(yīng)用服務(wù)的一個(gè)接口 協(xié)議有  HTTP FTP TFTP SMTP SNMP DNS ETELNET HTTPS POP3 DHCP

8.正則表達(dá)式

  • 正則表達(dá)式的作用

  • 分隔符正斜線(/)毕谴、hash符號(hào)(#)、取反符號(hào)(~)

  • 通用原子

    • \d 匹配數(shù)字
    • \D 匹配除了數(shù)字
    • \w 數(shù)字字母下劃線
    • \W 除了數(shù)字字母下劃線
    • \s 空白符
    • \S 除了空白符
  • 元字符

    • . 除了換行符
      • 前面的內(nèi)容0個(gè)一個(gè)或多個(gè)
        
    • ? 前面的內(nèi)容0個(gè)或一個(gè)
      • 前面的內(nèi)容0個(gè)或一個(gè)
        
    • ^ 以^后面的內(nèi)容開始
    • 以后面的前面的內(nèi)容結(jié)束
    • {n} 匹配前面的內(nèi)容n個(gè)
    • {n,} 匹配前面的內(nèi)容>=n個(gè)
    • {n,m} 匹配前面的內(nèi)容>=n個(gè)<=m個(gè)
    • [] 集合 [abc] a或b或c
    • () 后向引用或整體
    • [^] 取反 [^abc] 除了abc
    • | 或者
    • [-] 范圍 [0-9] 代表0-9
  • 模式修正符

    • i 不區(qū)分大小寫
    • m 每一行分開匹配(前提是有換行)
    • e 對(duì)匹配到的數(shù)據(jù)做php語法處理(php7.0已移除)
    • s 修正點(diǎn).的換行
    • U 取消貪婪模式
    • x 忽略模式中的空白符
    • A 必須以這個(gè)模式開頭
    • D 修正$對(duì)\n的忽略
    • u 中文匹配
  • 后向引用

    eg:

    $str='<b>abc</b>';

    $pattern='/<b>(.*)<\/b>/';

    preg_replace($pattern,'\\1 ',$str);//此處1代表(.*)匹配到的東西
  • 貪婪模式
    eg:
    $str='<b>abc</b><b>abc</b>';

    $pattern='/<b>(.*)<\/b>/';

    preg_replace($pattern,'\\1 ',$str);
.* 匹配會(huì)匹配到最后一個(gè) //<b>abc</b><b>abc</b>

.*距芬?取消貪婪模式匹配到一個(gè)  就不往下匹配了  //<b>abc</b>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涝开,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子框仔,更是在濱河造成了極大的恐慌舀武,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件存和,死亡現(xiàn)場(chǎng)離奇詭異奕剃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)捐腿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門纵朋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茄袖,你說我怎么就攤上這事操软。” “怎么了宪祥?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵聂薪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蝗羊,道長(zhǎng)藏澳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任耀找,我火速辦了婚禮翔悠,結(jié)果婚禮上业崖,老公的妹妹穿的比我還像新娘。我一直安慰自己蓄愁,他們只是感情好双炕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撮抓,像睡著了一般妇斤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丹拯,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天站超,我揣著相機(jī)與錄音,去河邊找鬼乖酬。 笑死顷编,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的剑刑。 我是一名探鬼主播媳纬,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼施掏!你這毒婦竟也來了钮惠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤七芭,失蹤者是張志新(化名)和其女友劉穎素挽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狸驳,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡预明,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了耙箍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撰糠。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖辩昆,靈堂內(nèi)的尸體忽然破棺而出阅酪,到底是詐尸還是另有隱情,我是刑警寧澤汁针,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布术辐,位于F島的核電站,受9級(jí)特大地震影響施无,放射性物質(zhì)發(fā)生泄漏辉词。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一猾骡、第九天 我趴在偏房一處隱蔽的房頂上張望瑞躺。 院中可真熱鬧隧魄,春花似錦、人聲如沸隘蝎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘱么。三九已至,卻和暖如春顽悼,著一層夾襖步出監(jiān)牢的瞬間曼振,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工蔚龙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冰评,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓木羹,卻偏偏與公主長(zhǎng)得像甲雅,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坑填,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355