——標識符(變量、常量、類名、數組名稱,函數名...)
——見名知意
——必須以_或者字母開頭,并且定義的所有標識符都需要在前面加上$
——必須要準循小駝峰命名法
——標識符可以包含_、字母、數字,不能有除了_以外的特殊字符
——數據類型(基本數據類型:int、String、double、bool,復合數據類型:數組、對象、類、接口..)
PHP支持8種原始數據類型:
四種標量類型(布爾型boolean,整型interger,浮點型float/double,字符串string)
兩種復合類型(數組array,對象object)
兩種特殊類型(資源resource,NULL)
——變量和常量
——常量前面沒有$符號
——常量只能通過define()定義,而不能通過賦值語句定義
——常量可以在任何地方定義和訪問,而變量定義的范圍有固定的規則
——常量一旦定義就不能被重新定義或者取消定義,而變量可通過賦值方式重新定義
——常量的值只能是標量數據,而變量的數據類型可是8種原始數據類型
——局部變量與全局變量,函數內是否可以直接調用全局變量
局部變量是函數內部定義的變量,其作用域是所在的函數,如果函數外還有一個跟局部變量名字一樣的變量,程序會認為它們兩個是完全不同的兩個變量。
當退出函數的時候,其中局部變量就同時被清除了
全局變量是定義在所有函數以外的變量,其作用域是整個PHP文件,但是在用戶自定義的函數內部是無法使用的。
如果一定要在用戶自定義的函數內部使用全局變量,那么就需要使用global關鍵字聲明,也就是說如果在函數內的變量前加global來修飾,那么函數內部就可以訪問到這個全局變量
不僅可以利用這個全局變量進行運算而且可以對這個全局變量進行重新賦值
全局變量還可以使用$GLOBAL['var']來調用
——字符串 (一些基本操作:
——strlen(統計長度),
——explode(拆分字符串),
——str_replace(字符串替換),
——trim(清除字符串左右空格))
——數組
——定義:$數組名 = array(元素值...);
——數組的遍歷 (for、froeach)
——數組的排序(冒泡排序) (外層控制著排序的
輪次,內層控制著每輪交換數據的次數)
——數組元素的添加、修改、刪除
array_push()--最后添加
array_unshift() --開始添加
array_pop()--刪除最后一位
?array_shift() --刪除第一位
——二維數組(多維數組)
——定義:$多維數組名 =array(array(),array().....);
——數組的遍歷(for,foreach)
——日期
——date(日期格式,[時間戳]);time()-->獲取時間戳
——$_POST、$_GET
——具體使用哪個由form(ajax.open)表單里面的method的值(get、post)決定
——文件讀寫
——fopen(文件路徑,打開方式(mode)) or die(處理不成功的時候輸出的信息);
? ? ????一定要注意文件的打開方式(mode),特別是打開之后指針(file pointor)的位置
? ?????返回值是一個數據輸出流對象(復合數據類型)
——fwrite(文件輸入輸出流對象,待寫入的
值),如果寫的時候要進行換行,需要在待寫入
的值里面加"\n"
——fgets(文件輸入輸出流對象(resource))
? ? ????一行一行讀,執行完之后文件的指針會向下走一格
????????如果想要讀完文件的全部內容,我們需要判斷文件指針的位置是否已經到達了文件的末尾(feof(file pointor end of file)),同時要使用循環介入
——fgetc(文件輸入輸出流對象(resource))
????????一個字符一個字符的讀
——讀寫完成之后要記得關閉resource(文件輸入流對象)
????????fclose(resource);
——異常處理
????????try-catch-throw (邏輯循序:throw->try->catch(Exception $標識符))
????????拋出異常:throw new Exception(異常信
息);
——文件上傳
????????需要在form表單里面添加一個名字為enctype="multipart/form-data"
????????最好使用post進行數據發送
????????可以通過$_FILES[name名稱]["error"]值來判斷用戶是否上傳文件
? ? ? ? ? ? ? ? —如果是0,已經通過前臺表單進行正確提交
? ? ? ? ? ? ? ? —否則失敗
????????可選:可以對文件的類型和大小進行過濾
????????move_upload_file(web服務器上文件的臨時目錄,目標上傳地址);
——json數據
????????格式:{key:value,key:value..}
????????php數據對象轉json: json_encode(對象名稱) json_decode(Json對象)
????????前端頁面解析Json: JSON.parse(獲取的Json對象),
????????返回值就是普通數組(Json對象),可以通過循環去取特定的值
——超全局變量(數組)
$_GLOBALS、$_FILES、$_GET、
$_POST、$_REQUEST
——函數的優越性
提高程序的可維護性
提高軟件的可靠性
提高程序的可重用性
提高程序的開發效率
——如何定義一個函數?函數名區分大小寫嗎?
使用function關鍵字
函數命名規則和變量一樣,以字母或者下劃線開頭,而不能以數字開頭
函數名不區分大小寫
函數名不可以使用已經聲明過得或者系統自建的函數名稱
——魔術函數/常量
必須以雙__開始和結束
__LINE__、__FILE__...
——命名空間
namespace 標識符{}
——$_COOKIE & $_SESSION
cookie是存儲到客戶端的,如果說我們在設置cookie沒有設置失效時間如果沒有設置失效時間,則cookie信息在瀏覽器里面存儲,如果說設置的失效時間,則cookie會被存儲到硬盤的某一個位置上
cookie只能存儲單個字符串數據
如果說你想在前端通過JS去獲取cookie數據一定要設置cookie的使用范圍,在開發階段可以設置為整個項目的根目錄
document.cookie:取到的是一個字符串(cookie名稱=值;cookie名稱=值...)
cookie名稱=值;cookie名稱=值
document.cookie.split(";") ["cookie名稱=值","cookie名
稱=值"]
document.cookie.split(";") [0].split("=") ["cookie
稱","值"]
document.cookie.split(";") [0].split("=")[1]
——session是存到服務端的
失效時間是根據服務端設置的失效時間來處理的
session是一種特殊的cookie
session可以存儲各種數據(字符串、數組、對象...)
如果要使用session進行存取數據,我們需要在文件的開始加上 session_start()
——HTML方面的cookies,sessionStorage和localStorage的區別
sessionStorage用于本地存儲一個會話(session)中的數據,這些數據只有在同一個會話中的頁面才能訪問并且當會話結束后數據也隨之銷毀。
因此sessionStorage不是一種持久化的本地存儲,僅僅是會話級別的存儲
localStorage用于持久化的本地存儲,除非主動刪除數據,否則數據是永遠不會過期的。
web storage和cookie的區別
Web Storage的概念和cookie相似,區別是它是為了更大容量存儲設計的。Cookie的大小是受限的,并且每次你請求一個新的頁面的時候Cookie都會被發送過去,這樣無形中浪費了帶寬,另外cookie還需要指定作用域,不可以跨域調用。
除此之外,Web Storage擁有setItem,getItem,removeItem,clear等方法,不像cookie需要前端開發者自己封裝setCookie,getCookie。但是Cookie也是不可以或缺的:Cookie的作用是與服務器進行交互,作為HTTP規范的一部分而存在 ,而Web Storage僅僅是為了在本地“存儲”數據而生。
——php中函數傳遞參數的方式有哪些?兩者有什么區別?
按值傳參和按地址傳參(或者引用傳參)
按值傳參:待傳遞的變量與傳遞給函數之后的變量是儲存在不同的空間中,所以函數體內對該變量做的修改,不影響原本的變量值
按地址傳參:使用$符號,表明該參數是以地址的方式傳遞值。并不會將主程序中的指定數值或目標變量傳遞給函數,而是把該數值或者變量的內存儲存區塊地址導入函數之中,所以函數體內的該變量和主程序中的該變量在內存中是同一個,函數體做的修改,直接影響到函數體外部的該變量的值。
$a與$array是按照按值傳遞,并且echo是執行在函數體以外,所以返回的值是10,1.但是$person->age是對象,在面向對象語言中對象的傳遞是按地址傳遞的。
如何讓$a與$array返回函數體內部的值: