第二天 PHP的基本語法02
=========================================================================================
7. 變量
7.1 變量的聲明
① 變量的定義
變量是用於臨時存儲值的容器。這些值可以是數字、文本、或者複雜得多的排列組合。是用於跟蹤幾乎所有類型信息的簡單工具。
② PHP變量特定
PHP是一種非常弱的類型語言。在大多數編程語言中,變量只能保持一種類型的數據,而且這個類型必須在使用變量前聲明,
例如C語言中。而在PHP中,變量的類型通常不是由程序員設定的,確切地說,是根據該變量使用的上下文在運行時(即變量
的值)決定的。 PHP不要求在使用變量之前聲明變量,當第一次給一個變量賦值時,你才創建了這個變量。
③ 定義變量
PHP的變量聲明是以$符開始的,後面跟大小寫字母,數字和下劃線,但不能以數字開頭。
可以使用函數unset( )釋放指定的變量,isset( )函數檢測變量是否設置,empty( )函數檢查一個變量是否爲空。
7.2 變量的命名
① 變量名與 PHP 中其它的標籤一樣遵循相同的規則。一個有效的變量名由字母或者下劃線開頭,後面跟上任意數量的字母,數字,或者下劃線。
② 變量的名稱是對大小寫敏感的。
③ 但內置結構和關鍵字以及用戶自定義的類名和函數名都是不區分大小寫的。如:echo、while、function名稱等。
7.3 可變變量
7.4 變量的引用賦值
8. 數據類型
8.1 類型介紹
① PHP 支持八種原始類型。
四種標量類型:
布爾型(boolean)
整型 (integer) 表示一個整數
浮點型(float)(浮點數,也作double)
字符串(String)
兩種複合類型:
數組(Array)
對象(Object)
最後是兩種特殊類型:
資源(Resource)
NULL
② 在PHP中,變量的類型通常不是由程序員設定的,確切地說,是根據該變量使用的上下文在運行時(即變量的值)決定的。
③ 使用函數var_dump( )查看表達式的值和類型
8.2 布爾型(boolean)
① 這是最簡單的類型。boolean 表達了真值,可以爲 TRUE 或 FALSE,即“真”或“假”。
② 當其他類型轉換爲 boolean類型 時,以下值被認爲是FALSE:
布爾值 FALSE
整型值 0(零)
浮點型值 0.0(零)
空白字符串和字符串"0"
沒有成員變量的數組
沒有單元的對象(僅適用於 PHP 4)
特殊類型 NULL(包括尚未設定的變量)
所有其它值都被認爲是 TRUE(包括任何資源)。
③ 特點
echo 布爾值 true會輸出1, false輸出空字符串
empty判讀布爾值變量, true會返回false , false返回true
8.3 整型(integer)
① 整型值可以用十進制,十六進制或八進制符號指定,前面可以加上可選的符號(- 或者 +)代表數值的正負。
②整數值有最大的使用範圍,這與平臺有關,對於32位系統而言範圍:-2147483648~2147483647,PHP不支持無符號整數。
如果超出了則變成了float型。
8.4 浮點型(float或double)
① 浮點數(也叫雙精度數或實數)是包含小數部分的數。通常用來表示整數無法表示的數據,如金錢值、距離值、速度值等。
浮點數的字長和平臺相關,儘管通常最大值是 1.8e308 並具有 14 位十進制數字的精度。
② 可以用科學計數法表示
③ 取整 的函數 round floor ceil
④ 浮點數的精度問題
8.5 字符串(String)
① string是一系列字符。在 PHP 中,字符和字節一樣,也就是說,一共有 256 種不同字符的可能性。
這也暗示 PHP 對 Unicode 沒有本地支持。
② 一個字符串變得非常巨大也沒有問題,PHP 沒有給字符串的大小強加實現範圍,所以完全沒有理由擔心長字符串。
③ 字符串的三種定義方式
單引號
雙引號
定界符
8.6 數組(Array)
① PHP 中的數組實際上是一個有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方面做了優化,
因此可以把它當成真正的數組來使用,或列表(矢量),散列表(是圖的一種實現),字典,集合,棧,隊列以及更多可能性。
因爲可以用另一個 PHP 數組作爲值,也可以很容易地模擬樹。
② PHP中可以使用多種方式構建一個數組,
8.7 對象(Object)
① 在PHP中,對象和數組一樣都是一種複合數據類型。但對象是一種更高級的數據類型。一個對象類型的變量,
是由一組屬性值和一組方法構成,其中屬性表明對象的一種狀態,方法通常用來表明對象的功能。
8.8 資源類型(Resource)
① 資源是一種特殊變量,保存了到外部資源的一個引用。資源是通過專門的函數來建立和使用的。
② 由於資源類型變量保存有爲打開文件、數據庫連接、圖形畫布區域等的特殊句柄,因此無法將其它類型的值轉換爲資源
③ PHP4Zend引擎引進了資源計數系統,可以自動檢測到一個資源不再被引用了(和 Java 一樣)。
這種情況下此資源使用的所有外部資源都會被垃圾回收系統釋放。
8.9 NULL類型
① 特殊的 NULL 值表示一個變量沒有值。NULL類型唯一可能的值就是NULL,表示一個變量的值爲空,NULL不區分大小寫。
② 在下列情況下一個變量被認爲是 NULL:
被賦值爲 NULL值的變量。
尚未被賦值的變量。
被unset()函數銷燬的變量。
8.10 僞類型介紹
① 僞類型並不是PHP語言中的基本數據類型,只是因爲PHP是弱類型語言,所以在一些函數中,一個參數可以接收多種類型的數據,
還可以接收別的函數作爲回調函數使用。
② 僞類型
mixed:說明一個參數可以接受多種不同的(但並不必須是所有的)類型。
number:說明一個參數可以是 integer 或者 float。
callback:有些諸如 call_user_function() 或 usort() 的函數接受用戶自定義的函數作爲一個參數。
Callback 函數不僅可以是一個簡單的函數,它還可以是一個對象的方法,包括靜態類的方法
一個 PHP 函數用函數名字符串來傳遞。可以傳遞任何內置的或者用戶自定義的函數,除了
array(),echo(),empty(),eval(),exit(),isset(),list(),print() 和 unset()。
9. 數據類型之間的互相轉換
9.1 類型轉換
① PHP 在變量定義中不需要(或不支持)明示的類型定義;變量類型是根據使用該變量的上下文所決定的。
② 類型轉換是指將變量或值從一種數據類型轉換成其他數據類型。轉換的方法有兩種:
自動轉換
強制轉換
9.2 強制類型轉換
PHP 中的類型強制轉換和 C 中的非常像:在要轉換的變量之前加上用括號括起來的目標類型
(int),(integer) - 轉換成整型
(bool),(boolean) - 轉換成布爾型
(float),(double),(real) - 轉換成浮點型
(string) - 轉換成字符串
(array) - 轉換成數組
(object) - 轉換成對象
注: 注意在括號內允許有空格和製表符,爲了將一個變量還原爲字符串,還可以將變量放置在雙引號中。
9.3 自動類型轉換
布爾環境
字符串環境
數值環境
9.4 變量類型的測試函數
is_bool():判斷是否是布爾型
is_int()、is_integer()和is_long():判斷是否爲整型。
is_float()、is_double()和is_real():判斷是否爲浮點型
is_string():判斷是否爲字符串
is_array():判斷是否爲數組
is_object():判斷是否爲對象
is_resource():判斷是否爲資源類型
is_null():判斷是否爲null
is_scalar():判斷是否爲標量
is_numeric():判斷是否是任何類型的數字和數字字符串
is_callable():判斷是否是有效的函數名
bool settype ( mixed var, string type )是將變量 var 的類型設置成 type。
10. 常量
10.1 常量的定義與使用
① 常量是一個簡單值的標識符(名字)。如同其名稱所暗示的,在腳本執行期間一個常量一旦被定義,就不能再改變或取消定義。
② 常量默認爲大小寫敏感。按照慣例常量標識符總是大寫的。
③ 量名和其它任何 PHP 標籤遵循同樣的命名規則。合法的常量名以字母或下劃線開始,後面跟着任何字母,數字或下劃線。
④ 常量的範圍是全局的。不用管作用域就可以在腳本的任何地方訪問常量。
⑤ 我們可以用 define() 函數或 const語法來定義常量。
10.2 常量與變量
① 常量和變量不同:
常量前面沒有美元符號($);
常量只能用 define() 函數定義,而不能通過賦值語句;
常量可以不用理會變量範圍的規則而在任何地方定義和訪問;
常量一旦定義就不能被重新定義或者取消定義;
常量的值只能是標量。
② 可以用函數 constant() 來讀取常量的值。
③ 用 get_defined_constants() 可以獲得所有已定義的常量列表
10.3 預定義常量
① 魔術常量
__LINE__
__FILE__
__FUNCTION__
__CLASS__
__METHOD__
② 系統常量
PHP_OS: 執行PHP解析的操作系統名稱
PHP_VERSION: 當前PHP服務器的版本。
11. PHP的運算符
11.1 什麼是運算符
① 定義
運算符是可以通過給出的一或多個值(用編程行話來說,表達式)來產生另一個值(因而整個結構成爲一個表達式)的東西。
所以可以認爲函數或任何會返回一個值(例如 print)的結構是運算符,而那些沒有返回值的(例如 echo)是別的東西。
② 有三種類型的運算符:
一元運算符: 只運算一個值,例如 !(取反運算符)或 ++(加一運算符)。
二元運算符: 有兩個操作數,PHP支持的大多數運算符都是這種。
三元運算符: ? :。它應該被用來根據一個表達式在另兩個表達式中選擇一個,而不是用來在兩個語句或者程序路線中選擇。
把整個三元表達式放在擴號裏是個很好的主意。
11.2 算數運算符
+ 加法運算
- 減法/去負 運算
* 乘法運算
/ 除法運算
% 取餘運算(取模運算)
++ 累加
-- 累減
11.3 字符串運算符
. 字符串連接符
11.4 賦值運算符
= 將一個值或表達式的結果賦給變量
+= 將變量與所賦的值相加後的結果賦給該變量
-= 將變量與所賦的值相減後的結果賦給該變量
*= 將變量與所賦的值相乘後的結果賦給該變量
/= 將變量與所賦的值相除後的結果賦給該變量
%= 將變量與所賦的值求模後的結果賦給該變量
.= 將變量與所賦的值相連後的結果賦給該變量
11.5 比較運算符
> 大於 當左邊大於右邊時返回true,否則返回false
< 小於 當左邊小於右邊時返回true,否則返回false
>= 大於等於 當左邊大於等於右邊時返回true,否則false
<= 小於等於 當左邊小於等於右邊時返回true,否則false
== 等於 兩邊操作數的值相等時返回true,否則false
=== 全等於 兩邊值相等並且類型相等返回true,否則false
<>或!= 不等於 兩邊值不等時返回true,否則返回false
!== 非全等於 兩邊值與類型都相同時返回false,否則true
11.6 邏輯運算符
and或&& 邏輯與 當兩邊操作數都爲true時,返回true,否則返回false
or或|| 邏輯或 當兩邊操作數都爲false時,返回false,否則返回true
not或! 邏輯非 當操作數爲true時返回false,否則返回true
xor 邏輯異或 當兩邊操作數只有一個爲true時,返回true,否則返回false
11.7 位運算符
& 按位與 只有參與運算的兩位都爲1時,運算結果才爲1,否則爲0.
| 按位或 只有參與運算的兩位都爲0時,運算結果才爲0,否則爲1.
^ 按位異或 只有參與運算的兩位不同,運算結果才爲1,否則爲0.
~ 按位非 將用二進制表示的操作數中的1變成0,0變成1.
<< 左移 將左邊的操作數在內存中的二進制數據右移右邊操作數指定的位數,右邊移空的部分補上0
>> 右移 將左邊的操作數在內存中的二進制數據左移右邊操作數指定的位數,左邊移空的部分補上0
11.8 其他運算符
? : 三元運算符,可以提供簡單的邏輯判斷。
`` 反引號(` `)是執行運算符,PHP將嘗試將反引號中的內容作外殼命令來執行,並將其輸入信息返回
@ 錯誤控制運算符,當將其放置在一個PHP表達式之前,該表達式可能產生的任何錯誤信息都被忽略掉。
=> 數組下標指定符號,通過此符號指定數組的鍵與值。
-> 對象成員訪問符號,訪問對象中的成員屬性或成員方法。
instanceof 類型運算符,用來測定一個給定的對象是否來自指定的對象類。
11.9 運算符的優先級
見圖
可以用()來控制優先順序
12. 表達式
表達式是 PHP 最重要的基石。在 PHP 中,幾乎所寫的任何東西都是一個表達式。簡單但卻最精確的定義一個表達式的方式就是“任何有值的東西”。