1.變量名是區(qū)分大小寫的
2.一個(gè)有效的變量名由字母或者下劃線開頭,后面跟上任意數(shù)量的字母靶橱,數(shù)字寥袭,或者下劃線路捧。在此所 ? ? 說的字母是 a-z,A-Z传黄,以及 ASCII 字符從 127 到 255(0x7f-0xff)杰扫。變量名中可以有中文。
3.$this是特殊的變量膘掰,不能被賦值章姓。
4.變量默認(rèn)總是傳值賦值。引用賦值會(huì)修改原始變量识埋。isset()用來檢測(cè)一個(gè)變量是否已被初始化凡伊。
5.變量范圍:
? ? ? ?大部分的 PHP 變量只有一個(gè)單獨(dú)的范圍。這個(gè)單獨(dú)的范圍跨度同樣包含了 include 和 require 引入的文件窒舟。定義變量會(huì)在當(dāng)前文件和包含文件中均生效系忙。
? ? ? ?若在用戶定義函數(shù)外定義了變量,在函數(shù)內(nèi)是不能直接使用的惠豺,需要global聲明為全局變量笨觅。使用全局變量的第二個(gè)辦法,是使用$_GLOBALS這個(gè)全局變量耕腾。
? ? ? ? 靜態(tài)變量。只在局部范圍存在杀糯,離開程序值依舊存在扫俺。聲明時(shí)不能用表達(dá)式的結(jié)果賦值,會(huì)報(bào)錯(cuò)固翰。靜態(tài)聲明在編譯時(shí)解析狼纬。
? ? ? ? 可變變量:超全局變量不能用作可變變量。
? ? ? ? 來自PHP外的變量:
? ? ? ? ? ? 1.HTML表單過來的變量變量名中的點(diǎn)和空格被換為下劃線
? ? ? ? ? ? 2.IMAJ SUBMIT來的變量骂际。用戶點(diǎn)擊時(shí)疗琉,除了相應(yīng)表單變量,還有sub_x,sub_y,是用戶點(diǎn)擊圖標(biāo)的坐標(biāo)歉铝。
? ? ? ? ? ? 3.HTTPCOOKIE
? ? ? ? ? ? ? ? Cookies 是一種在遠(yuǎn)端瀏覽器端存儲(chǔ)數(shù)據(jù)并能追蹤或識(shí)別再次訪問的用戶的機(jī)制盈简。可以用setcookie()函數(shù)設(shè)定 cookies太示。Cookies 是 HTTP 信息頭中的一部分柠贤,因此 SetCookie 函數(shù)必須在向?yàn)g覽器發(fā)送任何輸出之前調(diào)用。對(duì)于header()函數(shù)也有同樣的限制类缤。Cookie 數(shù)據(jù)會(huì)在相應(yīng)的 cookie 數(shù)據(jù)數(shù)組中可用臼勉,例如$_COOKIE,$HTTP_COOKIE_VARS和$_REQUEST
? ? ? ? ? ? 變量名中點(diǎn)的處理餐弱。
常量:
1.define()和const 可定義常量宴霸,常量習(xí)慣大寫囱晴。一旦定義,就不能取消定義或改變瓢谢。
2.常量的值只能是標(biāo)量畸写。
3.常量和全局變量在不同的命名空間內(nèi)。
4.常量可以不用理會(huì)變量的作用域而在任何地方定義和訪問
5.如果常量名是動(dòng)態(tài)的恩闻,也可以用函數(shù)constant()來獲取常量的值艺糜。用get_defined_constants()可以獲得所有已定義的常量列表。
6.魔術(shù)常量:
? ? ? __FILE__ ? 返回當(dāng)前文件路徑和文件名幢尚。
? ? ?__DIR__文件路徑破停,等同dirname(__FILE__)
7.執(zhí)行運(yùn)算符
? ? ? ?PHP 支持一個(gè)執(zhí)行運(yùn)算符:反引號(hào)(``)。注意這不是單引號(hào)尉剩!PHP 將嘗試將反引號(hào)中的內(nèi)容作為外殼命令來執(zhí)行真慢,并將其輸出信息返回(即,可以賦給一個(gè)變量而不是簡單地丟棄到標(biāo)準(zhǔn)輸出)理茎。使用反引號(hào)運(yùn)算符“`”的效果與函數(shù)shell_exec()相同黑界。
8.數(shù)組運(yùn)算符
? ? +運(yùn)算符把右邊的數(shù)組元素附加到左邊的數(shù)組后面,兩個(gè)數(shù)組中都有的鍵名皂林,則只用左邊數(shù)組中的朗鸠,右邊的被忽略。
9.instanceof也可用于確定一個(gè)變量是不是實(shí)現(xiàn)了某個(gè)接口的對(duì)象的實(shí)例:
10.declare()有tick和encoding兩種指令础倍。
11.require和include幾乎完全一樣烛占,除了處理失敗的方式不同之外。require在出錯(cuò)時(shí)產(chǎn)生E_COMPILE_ERROR級(jí)別的錯(cuò)誤沟启。換句話說將導(dǎo)致腳本中止而include只產(chǎn)生警告(E_WARNING)忆家,腳本會(huì)繼續(xù)運(yùn)行。
12.goto
? ? ?goto操作符可以用來跳轉(zhuǎn)到程序中的另一位置德迹。該目標(biāo)位置可以用目標(biāo)名稱加上冒號(hào)來標(biāo)記芽卿,而跳轉(zhuǎn)指令是goto之后接上目標(biāo)位置的標(biāo)記。PHP 中的goto有一定限制胳搞,目標(biāo)位置只能位于同一個(gè)文件和作用域卸例,也就是說無法跳出一個(gè)函數(shù)或類方法,也無法跳入到另一個(gè)函數(shù)肌毅。也無法跳入到任何循環(huán)或者 switch 結(jié)構(gòu)中币厕。可以跳出循環(huán)或者 switch芽腾,通常的用法是用goto代替多層的break旦装。
13.數(shù)組最后一個(gè)元素的$value引用在foreach循環(huán)之后仍會(huì)保留。建議使用unset()來將其銷毀摊滔。
? ? ? foreach不支持用“@”來抑制錯(cuò)誤信息的能力阴绢。
? ? ? PHP 5.5 增添了遍歷一個(gè)數(shù)組的數(shù)組的功能并且把嵌套的數(shù)組解包到循環(huán)變量中店乐,只需將list()作為值提供。
14.PHP 中的所有函數(shù)和類都具有全局作用域呻袭,可以定義在一個(gè)函數(shù)之內(nèi)而在之外調(diào)用眨八,反之亦然。PHP 不支持函數(shù)重載左电,也不可能取消定義或者重定義已聲明的函數(shù)廉侧。函數(shù)名是大小寫無關(guān)的,不過在調(diào)用函數(shù)的時(shí)候篓足,使用其在定義時(shí)相同的形式是個(gè)好習(xí)慣段誊。
15.可變函數(shù):這意味著如果一個(gè)變量名后有圓括號(hào),PHP 將尋找與變量的值同名的函數(shù)栈拖,并且嘗試執(zhí)行它连舍。可變函數(shù)可以用來實(shí)現(xiàn)包括回調(diào)函數(shù)涩哟,函數(shù)表在內(nèi)的一些用途索赏。
16.匿名函數(shù):匿名函數(shù)(Anonymous functions),也叫閉包函數(shù)(closures)贴彼,允許 臨時(shí)創(chuàng)建一個(gè)沒有指定名稱的函數(shù)潜腻。最經(jīng)常用作回調(diào)函數(shù)(callback)參數(shù)的值。閉包可以從父作用域中繼承變量器仗。 任何此類變量都應(yīng)該用use語言結(jié)構(gòu)傳遞進(jìn)去融涣。