博文結構:php
2.1 PHP語法風格html
2.1.1 PHP標記編程
PHP有四種風格的標記,具體如表2-1所示:數組
表2-1 PHP開始和結束標記瀏覽器
標記類型服務器 |
開始標記編程語言 |
結束標記函數 |
示例spa |
說明操作系統 |
標準標記 |
<?php |
?> |
<?php echo 「Hello」; ?> |
服務器不由用這種標記,兼容性、可移植性、可複用性好 |
短標記 |
<? |
?> |
<? echo 「Hello」; ?> |
必須在配置文件php.ini中啓用short_open_tag選項 |
ASP式標記 |
<% |
%> |
<% echo 「Hello」; %> |
必須在配置文件php.ini中啓用asp_tags選項 |
Script標記 |
<script language=」php」> |
</script> |
<script language=」php」>echo 「Hello」; </script> |
只需瞭解,PHP不推薦這種標記 |
在上述四種標記中,只有標準標記和Script標記能保證對任何配置都有效,而段標記和ASP式標記只能在php.ini中顯式的啓用。
注意:
(1)若腳本中包含XML語句,避免使用段標記,由於「<?」是XML解析器的一個處理指令。
(2)PHP和HTML代碼能夠進行混合編程。 <html> <body> <p>Hello HTML</p> <p><?php echo "Hello,PHP"; ?></p> </body> </html>
更常見的用法:
<?php if($age>18): ?>
<p>成年人</p>
<?php else: ?>
<p>小朋友</p>
<?php endif ?>
(3)瀏覽器不識別PHP代碼,PHP必須在服務器中執行,雙擊打開PHP文件是達不到效果的。
2.1.2 PHP註釋
PHP支持C、C++、Shell三種風格的註釋。
①C++風格註釋
<?php echo "Hello,PHP"; //輸出一句話------行註釋 ?>
②C風格多行註釋
<?php /* echo "Hello,PHP"; $c=10; 塊註釋 */ ?>
③Shell風格註釋「#」
<?php echo "Hello,PHP"; #輸出一句話------行註釋 ?>
2.2 PHP標識符與關鍵字
2.2.1 標識符
標識符:變量名、函數名、類名等。
定義標識符規則:
①標識符能夠是任意長度,只能由字母、數字、下劃線組成;
②標識符不能以數字開頭;
③標識符不能包含空格;
④若是標識符由多個單詞組成,建議使用下換線分割;
⑤標識符區分大小寫,不過函數名稱例外,不區分大小寫;
2.2.2 關鍵字
關鍵字是編程語言裏事先定義好並賦予特殊含義的單詞,也稱保留字。
2.3 PHP常量
2.3.1 常量的定義
腳本執行週期內,值不會發生變化的量,稱爲常量。相同的值,定義爲常量,能夠節省存儲空間,如運行模式常量,版本常量,路徑常量等。
①語法1
bool define(常量名,常量值,$case_insensitive=false)
上述聲明中,常量名、常量值是必須的,參數$case_insensitive是可選的,用於指定常量名稱是否對大小寫敏感,若是$case_insensitive=true,表示在調用該常量時,常量名對大小寫不敏感,不然表示常量名對大小寫敏感。默認狀況下$case_insensitive=false。
②語法2
const 常量名=常量值
上述聲明中,與define定義的常量同樣。
注意:
/* ①使用const方式定義的常量的缺點:低版本不支持; ②不能在函數區、流程控制中定義常量; ③按照開發慣例,常量名推薦所有字母大寫 ④常量名前面儘可能不要加「$」 下面經過示例演示常量的定義 */ <?php //定義常量 define('VERSION',"2.0.0"); //打印常量 echo VERSION; ?>
2.3.2 預約義常量
PHP提供了不少預約義的常量,用以獲取PHP中的信息,不容許開發人員隨意修改。如表2-2所示:
表2-2 PHP中預約義常量的名稱及其做用
常量名 |
功能描述 |
__FILE__ |
默認常量,PHP程序文件名 |
__LINE__ |
默認常量,PHP程序中當前行號 |
PHP_VERSION |
內建常量,PHP程序的版本 |
PHP_OS |
內建常量,執行PHP解析器的操做系統的名稱 |
TRUE |
該常量是一個真值(true) |
FALSE |
該常量是一個假值(false) |
NULL |
一個null值 |
E_ERROR |
該常量指到最近的錯誤處 |
E_WARNING |
該常量指到最近的警告處 |
E_PARSE |
該常量指到解析語法有潛在問題處 |
E_NOTICE |
該常量爲發生不尋常,但不必定是錯誤處 |
示例代碼以下:
<?php //獲取當前文件路徑 echo "當前文件路徑是:" . __FILE__; //獲取當前php的版本號 echo "當前PHP的版本是" . PHP_VERSION; //獲取當前操做系統 echo "當前的操做系統是:" . PHP_OS; ?>
2.4 PHP變量
2.4.1 變量的定義
在PHP中,變量是用一個「$」符號和後面的變量名來聲明表示,變量名一樣區分大小寫,命名規則與標識符相同。同時,由於PHP一種弱語言,不須要顯式聲明,變量的聲明和賦值是同時進行的,即直接將一個值經過「=」賦給變量。
$name="歐陽華夏"; $age=28; $is_Single=true; $Info=["歐陽華夏",28,true];
注意:
/* 變量默認是傳值賦值,即將A變量的值賦給B變量時候,整個A的值被賦值到B;變量還有一種賦值方式是引用賦值,表示B變量引用了A變量,若是一個變量的值發生改變,另一個變量的值隨之發生變化。想要實現變量的引用賦值,須要將「&」符號加到要賦值的變量前。 */ <?php $text="Hello"; $new_text=&$text; ?>
變量的讀取:
echo的做用是向頁面輸入字符串
var_dump()輸出複雜類型
print_r()輸出複雜類型
2.4.2 PHP的數據類型
PHP數據類型共八種,如圖2-1所示。標量類型只能存儲一個數據,符合類型能夠存儲一組數據。
圖2-1 八種數據類型
一、boolen布爾型
不只true/false能夠表示boolen值,其餘類型的數據也能夠表示boolen值。例如:0和非0
二、integer整型
能夠用十進制、十六進制、八進制或者二進制指定,前面加上「+」和「-」表示正數和負數。
整型最大值: PHP_INT_MAX
三、float浮點型
不能比較兩個浮點數是否相等。
四、string字符串型
字符串的定義雙引號、單引號均可以。可是兩者存在區別。
①包含在雙引號的字符串會被解析,包含在單引號的字符串不會解析,下面示例對這句話進行說明:
<?php $a=9; $char1="hello$a"; $char2='hello$a'; echo "char1的輸出結果是:" . $char1; //char1的輸出結果是:hello9----$a被解析 echo "<br/>"; echo "char2的輸出結果是:" . $char2; //char2的輸出結果是:hello$a---$a未被解析 ?>
②對待轉義字符不一樣
2.4.3 檢測變量的數據類型
變量的數據類型在賦值時候肯定,在PHP中提供了一組is_*()函數,括號中參數爲要檢測的變量,若是檢測的變量符號則返回true,不然返回false。
表2-3 檢測數據類型的相關函數
函數名稱 |
功能描述 |
函數名稱 |
功能描述 |
Is_bool(PHP變量) |
檢測變量是否屬於布爾類型 |
Is_array(PHP變量) |
檢測變量是否屬於數組 |
Is_string(PHP變量) |
檢測變量是否屬於字符串類型 |
Is_response(PHP變量) |
檢測變量是否屬於資源 |
Is_integer(PHP變量) |
檢測變量是否屬於整型 |
Is_numeric(PHP變量) |
檢測變量是否屬於數組或者數字組成的字符串 |
Is_null(PHP變量) |
檢測變量是否屬於空值 |
Is_object(PHP變量) |
檢測變量是否屬於對象類型 |
Is_float(PHP變量) |
檢測變量是否屬於浮點類型 |
|
對null值的檢測
爲null的幾種狀況:①變量未賦值;②變量被刪除;③變量被賦null;
empty()判斷變量是否爲空
PHP中認爲變量的值爲:「」,0,「0」,[],null,false時,變量雖然定義了,但無實際意義,爲空。
isset()變量未設置或者設置爲NULL時,返回false,其他返回true。變量爲空字符串或者0時,此時變量有具體類型,表示已經設置了。
2.5 變量類型的轉換
2.5.1 自動類型轉換
在PHP中,最多見的自動類型轉換狀況有三種:轉爲布爾、轉爲數值、轉爲字符串;
一、轉爲布爾型
轉爲false的狀況:
①整型值:0
②浮點型值:0.0
③空字符串:」「
④字符串:」0「
⑤空數組:[]
⑥不包括任何成員變量的對象
⑦NULL
除此以外,其餘值會被轉爲true。
二、轉爲數值型
①純數字組成的字符串轉爲相應的數字:」123456「----->123456;
②能夠轉換爲浮點型的數字轉化爲相應的浮點數:」123.456「----->123.456;
③以數字開頭的字符串轉爲對應的數字:」123456歐陽華廈「----->123456;
④不以數字開頭的字符串,包括」true「,轉爲0:」歐陽華廈123456「----->0;
⑤布爾類型值:true--->1;false--->0;
自動轉換不改變原始變量的數據類型,僅改變參與運算的數據的類型。
三、轉爲字符串
①bool類型轉換成字符串:true--->"1" false---->"0";
②整型和浮點型轉換爲字符串:把數字的字面樣式轉換爲string形式。
2.5.2 強制類型轉換
PHP中的強制類型轉換很是簡單,只須要在變量前加一個小括號,並把目標類型填寫在括號中實現。表2-4列舉了強制轉換的類型。
表2.4 強制轉換類型
函數名稱 |
功能描述 |
函數名稱 |
功能描述 |
(boolen) |
強轉爲布爾型 |
(float) |
強轉爲浮點型 |
(string) |
強轉爲字符串型 |
(array) |
強轉爲數組 |
(integer) |
強轉爲整型 |
(object) |
強轉爲對象 |
2.6 PHP運算符
2.6.1 算數運算符
見表2-5:
表2-5 算數運算符
運算符 |
運算 |
範例 |
結果 |
+ |
正號 |
+3 |
3 |
- |
負號 |
-2 |
-2 |
+ |
加 |
5+5 |
10 |
- |
減 |
6-4 |
2 |
* |
乘 |
3*4 |
12 |
/ |
除 |
5/5 |
1 |
% |
取模 |
7%5 |
2 |
有浮點數參與運算的時候,計算結果的數據類型老是浮點型;當整數與整數運算的結果是小數時,其數據類型也是浮點型。
在進行取模運算的時候,運算結果的正負取決於被模數(%左邊的數)的符號,與模數(%右邊的數)的符號無關。如(-5)%3=-2,而5%(-3)=2.
2.6.2 賦值運算符
見表2-6:
表2-6 賦值運算符
運算符 |
運算 |
範例 |
結果 |
= |
賦值 |
$a=3;$b=2; |
$a=3;$b=2; |
+= |
加等於 |
$a=3;$b=2;$a+=$b; |
$a=5;$b=2; |
-= |
減等於 |
$a=3;$b=2;$a-=$b; |
$a=1;$b=2; |
*= |
乘等於 |
$a=3;$b=2;$a*=$b; |
$a=6;$b=2; |
/= |
除等於 |
$a=3;$b=2;$a/=$b; |
$a=1.5;$b=2; |
%= |
模等於 |
$a=3;$b=2;$a%=$b; |
$a=1;$b=2; |
.= |
鏈接等於 |
$a=’abc’;$a.=’def’; |
$a=’abcdef’; |
賦值運算符的做用將右側表達式結果(從右側到左側計算)賦值給左側變量;
①在PHP語言中能夠經過一條賦值語句對多個變量進行賦值; $a=$b=$c=10;
②在表2-7中,除了「=」,其他都是特殊的賦值運算符;
③「.=」表示對兩個字符串進行鏈接操做,生成一個新的字符串並賦值給變量,它又被稱爲字符串運算符;
2.6.3 遞增遞減運算符
見表2-7:
表2-7 遞增遞減運算符
運算符 |
運算 |
範例 |
結果 |
++ |
自增(前) |
$a=2;$b=++$a; |
$a=3;$b=3; |
-- |
自減(前) |
$a=2;$b=--$a; |
$a=1;$b=1; |
++ |
自增(後) |
$a=2;$b=$a++; |
$a=3;$b=2; |
-- |
自減(後) |
$a=2;$b=$a--; |
$a=1;$b=2; |
遞增遞減字符:
<?php $x='a'; echo --$x . "<br/>"; //輸出爲a echo ++$x . "<br/>"; //輸出爲b $x='z'; echo ++$x . "<br/>"; //輸出爲aa $x='Z'; echo ++$x . "<br/>"; //輸出爲AA $x='abcd'; echo ++$x . "<br/>"; //輸出爲abce ?>
①在PHP語言中,只支持純字母(a~z和A~Z)的遞增運算;在PHP中對字符進行遞減操做時,該操做無效,且操做數的值不變。
②當對字符z和Z進行遞增操做時,字符會向前進一位,變成aa後者AA;
③對多個字母組成的字符串進行遞增操做時,會針對字符串末尾的單個字符進行遞增操做。
遞增遞減布爾值或者NULL:
①當操做數是布爾類型時,遞增遞減操做對其值不產生影響;
②當操做數爲null時,遞增的結果是1,遞減不受印象。
2.6.4 比較運算符
見表2-8:
表2-8 比較運算符
運算符 |
運算 |
範例($x=5) |
結果 |
== |
等於 |
$x ==4; |
false |
!= |
不等於 |
$x!=4; |
true |
<> |
不等於 |
$x<>4; |
true |
=== |
恆等 |
$x===5; |
true |
!== |
不恆等 |
$x!==’5’; |
true |
> |
大於 |
$x>5; |
false |
>= |
大於或者等於 |
$x>=5; |
true |
< |
小於 |
$x<5; |
false |
<= |
小於或者等於 |
$x<=5; |
true |
①「===」和「!==」比較少見,當$x===$y爲true,表示x,y不止數值相等,兩者類型也相等,當$x!==$y 爲true時,要麼數值不相等,要麼數據類型不相等;
②在程序中,若是參與比較運算的操做數中含數字類型的數據時,則在比較的過程當中,會將全部的操做數轉爲數值,而後按照數值進行比較;
2.6.5 邏輯運算符
見表2-9:
表2-9 邏輯運算符
運算符 |
運算 |
範例 |
結果 |
&& |
與 |
$a && $b; |
$a和$b都爲true,結果爲true,不然爲false |
|| |
或 |
$a || $b; |
$a和$b中至少又一個爲true,結果爲true,不然爲false |
! |
非 |
! $a; |
若$a爲false,結果爲true,不然相反 |
xor |
異或 |
$a xor $b; |
$a和$b的值一個爲true,一個爲false時,結果爲true,不然爲false |
and |
與 |
$a and $b; |
與 &&相同,但優先級較低 |
or |
或 |
$a or $b; |
與||相同,但優先級較低 |
2.7 流程控制語句
2.7.1 選擇控制語句
①if
②if......else
③if......elseif......else
④switch......case
注意:
/* ①if語句中只包含一條語句時,它的大括號是能夠省略的。 ②使用switch語句過的過程當中,若是多個case條件後面的執行語句是同樣的, 則該執行語句只需書寫一次便可。 ③在PHP中,switch語句中的break也可使用continue代替,做用基本相同。 ④在第一個case匹配成功後,沒有碰到break語句,會不進行匹配直接執行其後全部case中的語句段,直到switch語句的最後一行或者碰到break語句。 */
2.7.2 循環語句結構
①while
②do......while
③for
④foreach(專門用來遍歷數組)
2.7.3 跳轉語句
跳轉語句用於實現循環執行過程當中程序流程的跳轉,在PHP中的跳轉語句有break語句、continue語句和goto語句,同時本段再介紹三個函數die\exit\sleep
一、break語句
①當break出如今switch條件語句中時,做用是終止某個case並跳出switch結構;
②當break出如今循環語句中時,做用是跳出當前循環,執行後面的代碼;
③break能夠接受一個數字參數決定跳出幾重循環;
二、cintinue語句
終止本次循環,執行下一次循環
三、goto語句
①goto語句的做用是跳轉到程序的另外一位置。在目標位置用目標名稱加上冒號來標記,跳轉語句是goto以後加上目標位置的語句;
②goto語句僅在PHP5.3及以上版本有效;
③goto語句只能在同一個文件或則做用域中跳轉,也就是說沒法跳出一個函數或者類方法,也沒法跳入另外一個函數。
<?php for($i=1,$j=10;$i<20;$i++){ while($j--){ if($j==5) goto end; } } echo '$i=' . $i; //不執行 end: echo '$i=' . $i . ' $j=' . $j; //$i=1 $j=5 ?>
四、die / exit
退出代碼執行,當前位置以後的全部代碼不執行,至關於return,能夠用來進行程序運行控制,能夠在出錯的時候執行此語句,退出代碼的執行;
exit能夠在退出時候輸出變量值,完成函數的執行; exit('結果爲:' . $res); //輸出 結果爲:$res
五、sleep
休眠函數,執行到sleep(秒數)所在語句時,延緩必定的秒數,繼續執行,能夠查看一些臨時數據。