摘要:可變變量可變變量是語言中的一種特殊用法,不知其他語言存不存在。簡而言之,可變變量就是,一個可變變量獲取了一個普通變量的值作為這個可變變量的變量名。當可變變量用于數組時,可能會出現模棱兩可的問題。常量語法常量在腳本執行期間其值不能改變。
變量基礎
PHP中的變量用一個美元符號后面跟變量名來表示。變量名是區分大小寫的,并且出現中文可能也是合法的。
變量默認總是傳值賦值。PHP也提供了另外一種方式給變量賦值:引用賦值。這意味著新的變量簡單的引用(換言之,"成為其別名" 或者 "指向")了原始變量。改動新的變量將影響到原始變量,反之亦然。使用引用賦值,簡單地將一個&符號加到將要賦值的變量前(源變量)。注意,只有有名字的變量才可以引用賦值。
預定義變量PHP擁有大量預定義變量,許多變量依賴與服務器,某些預定義變量以命令行形式運行時并不生效。
PHP提供了一套附加的預定數組,這些數組變量包含了來自web服務器(如果可用),運行環境,和用戶輸入的數據,通常被稱為自動全局變量(autoglobals)或者超全局變量(superglobals)。
變量范圍這里的變量范圍指的是,它定義的上下文背景,也就是它的生效范圍。變量的范圍包含了include和require引入的文件。
PHP的全局變量和C語言有一點點不同,在C語言中,全局變量在函數中自動生效,除非被局部變量覆蓋。PHP中全局變量在函數中使用時必須聲明為global。
b.inc內容如下:
該程序能夠正常輸出hello,但是被注釋掉的test()不能正常解析,因為變量$a是未定義的。
使用全局變量若在某個函數中想使用全局變量,可以通過下面兩種方式。
global關鍵字
global $a, $b;在函數中聲明全局變量后,對任一變量的所有引用都會指向其全局版本。
$GLOBALS超全局變量數組
$GLOBALS["b"] = $GLOBALS["a"] + $BLOBALS["b"];用法同global關鍵字相似。
靜態變量靜態變量僅在局部函數域中存在,但當程序執行離開此作用域時,其值并不丟失。并且,只在聲明時初始化一次,每次調用函數并不會覆蓋靜態函數的值。
靜態變量在聲明中用表達式的結果對其賦值會導致解析錯誤,靜態聲明是在編譯時解析的。
和C語言的static相似,下面這段C代碼也可以把0~9十個數字依次輸出。
#includevoid test(void) { static int cnt = 0; printf("%d ", cnt); cnt++; if(cnt < 10) { test(); } cnt--; } int main(void) { test(); return 0; } 對于變量的static和global定義是以引用的方式實現的。
可變變量可變變量是PHP語言中的一種特殊用法,不知其他語言存不存在。
簡而言之,可變變量就是,一個可變變量獲取了一個普通變量的值作為這個可變變量的變量名。
當可變變量用于數組時,可能會出現模棱兩可的問題。比如,寫下$$a[1],編譯器會報錯的,你想要表達的意思需要用下面兩種方式替換掉。
${$a[1]}
$a[1]作為一個變量${$a}[1]
表單變量
$$a作為一個變量并取出變量中索引為1的值。當表單提交給PHP腳本時,表單中的信息自動在腳本中可用,可以通過$_GET[]、$_POST[]和$_REQUEST[]訪問。
注意,變量名中的點和空格被轉換成下劃線。例如變成了$_REQUEST["a_b"],下面的示例中展示了表單中標識符的使用。
表單處理文件process.php。
因為句點不是PHP變量名中的合法字符,輸出結果如下所示。
boolean false boolean false boolean true string "h3" (length=2)magic_quotes_gpc配置指令影響到get/post/cooie的值,這個特性已經廢棄移除,輸入中的單引號、雙引號、反斜杠和NULL字符都不會被轉義。若需要轉義可使用addslashes(),若需要反引用一個引用的字符串需要使用stripslashes()。
PHP也懂得表單變量上下文中的數組,下面的例子使用了更復雜的表單變量,并將表單post給自己并在提交時顯示數據。
STR; echo $s; }在heredoc中含有復雜變量時要格外小心,上面這段代碼$_SERVER["PHP_SELF"]不加花括號會在運行時報錯。
array (size=4) "personal" => array (size=2) "name" => string "hello" (length=5) "detail" => string "world" (length=5) "option" => array (size=2) 0 => string "a" (length=1) 1 => string "c" (length=1) "action" => string "submitted" (length=9) "submit" => string "提交查詢內容" (length=12)IMAGE提交當提交表單時,可以用一張圖片代替標準的提交按鈕。第一次使用,真的好神奇。
STR; echo $s; }對于上面這段程序,當用戶點擊圖片某處時,表單會傳送到服務器,并加上兩個變量sub_x和sub_y,包含了用戶點擊圖片的坐標。
array (size=3) "action" => string "1" (length=1) "sub_x" => string "334" (length=3) "sub_y" => string "282" (length=3)cookiesPHP可以用setcookie()函數設定cookies,cookies是HTTP信息頭的一部分,因此必須在向瀏覽器發送任何輸出之前調用。
cookie的相關使用如下所示。
cookie數據在相應的cookie數組中可用,如果將多個值賦給一個cookie變量,必須將其賦成數組。
常量語法常量在腳本執行期間其值不能改變。常量大小寫敏感,傳統上常量標識符總是大寫。常量一旦定義就不能被重新定義或取消定義,常量的值只能是標量。
可以用define()函數來定義常量,也可以使用const關鍵字在類定義之外定義常量。自定義常量不要以雙下劃線開頭,可能會與魔術常量沖突。
define("FOO", "something"); const FOO = "something";使用const關鍵字定義常量必須處于最頂端的作用區域,因為用此方法是在編譯時定義的。常量的范圍是全局的,不用管作用區域,就可以在腳本的任何地方訪問常量。
魔術常量魔術常量值能變,但它其實不是常量。
__LINE__ // 文件中的當前行號 __FILE__ // 文件的完整路徑和文件名,絕對路徑 __DIR__ // 文件所在的目錄,除非根目錄,否則不包括末尾斜杠,等價于dirname(__FILE__) __FUNCTION__ // 函數名稱,區分大小寫 __CLASS__ // 類的名稱,包括其被聲明的作用區域 __TRAIT__ // Trait的名字,包括其被聲明的作用區域 __METHOD__ // 類的方法名 __NAMESPACE__ // 當前命名空間的名稱PHP向它運行的任何腳本提供了大量的預定義常量,上面8個魔術常量的值隨著它們在代碼中的位置改變而改變。
(全文完)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21112.html
摘要:最近計劃把手冊,認真的先過一遍。語言參考類型新認知強制轉換類型用。后期靜態綁定從這里開始語言參考生成器新認知生成器汗水的核心是關鍵字。語言參考預定義變量超全局變量前一個錯誤信息原始數據以上 showImg(https://segmentfault.com/img/remote/1460000010147451); 最近計劃把 PHP手冊,認真的先過一遍。記錄一些以前不知道,不明確的知識...
摘要:通過注冊自動加載器,腳本引擎在出錯失敗前有了最后一個機會加載所需的類構造函數和析構函數構造函數允行開發者在一個類中定義一個方法作為構造函數。析構函數會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行抽象類支持抽象類和抽象方法。 語言參考 1. 類型 1.1 簡介 showImg(https://segmentfault.com/img/bVbqlNJ?w=531&h=379);...
摘要:說明這篇文章是我第一次認真閱讀阿里巴巴開發手冊終極版的筆記。說明本手冊明確防止是調用者的責任。一年半載后,那么單元測試幾乎處于廢棄狀態。好的單元測試能夠最大限度地規避線上故障。 說明 這篇文章是我第一次(認真)閱讀《阿里巴巴 Java 開發手冊(終極版)》的筆記。手冊本身對規范的講解已經非常詳細了,如果你已經有一定的開發經驗并且有良好的編碼習慣和意識,會發現大部分規范是符合常識的。所以...
摘要:與變量不同,常量不存在可變常量,如果常量名是動態的,也可以用函數來獲取常量的值。執行運算符命令反引號。遞增遞減運算符不影響布爾值。遞增遞減其他字符變量則無效,原字符串沒有變化。不允許用來檢測常量。 變量 基本 引用賦值 global 關鍵字 以下結果在命令行中有效,網頁php中請不要嘗試。。。都是坑。Example #1 使用 global或$GLOBALS 以下為網頁ph...
摘要:學習至今一年有余,筆記積累挺多的,也挺雜的,寫篇文章整理一下吧。基礎部分輸出文本的基礎指令和。函數內部聲明的變量擁有作用域,只能在函數內部進行訪問。布爾型要指定一個布爾值,使用關鍵字或。 php學習至今一年有余,筆記積累挺多的,也挺雜的,寫篇文章整理一下吧。 php基礎部分 showImg(http://segmentfault.com/img/bVcWhR); PHP 輸出文本...
閱讀 1891·2021-11-22 09:34
閱讀 3025·2021-09-28 09:35
閱讀 13430·2021-09-09 11:34
閱讀 3599·2019-08-29 16:25
閱讀 2826·2019-08-29 15:23
閱讀 2041·2019-08-28 17:55
閱讀 2431·2019-08-26 17:04
閱讀 3049·2019-08-26 12:21