PHP從入門到精通
(一)PHP簡介和基本知識
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯后代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
首先,我們來了解一些關於PHP的一些基礎知識
【靜態網站與動態網站】
1、靜態網站:(純HTML頁面,頁面固定,不會變化),沒有與后台服務器的交互,沒有數據庫的支持;
2、動態網站:(可以根據交互情況動態顯示不同的內容),需要與后台服務器進行數據交互,需要數據庫的支持。
【支持動態網站的語言】
Java----->jsp
PHP----->php
asp----->asp
【常見服務器】
Apache:阿帕奇公司旗下服務器,用於解析PHP類網站;
Tomcat:阿帕奇公司旗下的另一款服務器,用於解析JS類網站;
【常見的數據庫】
MySQL、Access、Oracle、SQLServer……
我們PHP一般配合MySQL使用。當然PHP可以連接幾乎所有主流數據庫。
【B/S C/S】
B/S結構:(Browser/Server,瀏覽器/服務器模式)。用戶只需要通過瀏覽器即可訪問的網站,大部分操作功能集中在后台服務器。
C/S結構:Client/Server結構是客戶端和服務器結構。用戶需要安裝客戶端。客戶端可以分擔一定的操作功能。
【常見的開發PHP集成環境】
wamp:Windows+Apache+MySQL+php;
lamp:linux+Apache+MySQL+php;
PHPstudy:
PHPserver:
PHP開發首選Linux系統,但是PHP能夠友好的兼容支持各種操作系統(Windows,Linux,macOs、Unix……);
PHP中的入門知識
【PHP標記的種類】
PHP文件中,如果使用php語法,必須將PHP語言放到標記當中。PHP支持如下四種標記方式:
①<?php?>這是PHP的官方推薦寫法,也就是我們主要采用的寫法!這種標記可以插入到HTML文檔的任意位置;
>>>注!!!:如果頁面中只有PHP語言,推薦省略結束標記?>
原因:空格部分……
②<script language="php"></script>長標記寫法:總是可以使用,但是,我們不推薦。
③<??>短標記寫法。默認不開啟,需要修改php.ini文件中“short_open_tag=On”打開。但是,由於與HTML標簽沖突,不推薦使用。
④<% %>ASP風格,默認不開啟,需要修改php.ini文件的"asp-tag = On"打開,但是和ASP,JSP中的標記沖突,不推薦
【PHP中的指令分隔符;】
1、PHP中的"結構定義語句"(分支、循環、類、函數等帶{}的),不需要使用分號結尾。
2、PHP中的"功能執行語句",(不用{}結尾的),必須使用分號結尾。
3、特例:最后結束標簽?>前的最后一條語句,可以省略分號。
//單行注釋
/*
* 多行注釋
*/
/**
* 文檔注釋
*/
#腳本注釋
【PHP中的變量】
①PHP中的變量,聲明與使用,必須使用$開頭。
②PHP是一種弱類型語言,變量其實並不需要聲明,可以直接給變量賦任何類型的值;
③PHP中可以使用連等同時聲明多個變量。而不能使用逗號分隔。
eg:$num1=$num2=$num3=5;
④常用變量函數:
unset():刪除並釋放變量;
isset():檢測變量是否設置;
empty():檢測變量是否為空(未設置或值為Null都算空);
⑤變量的命名:只能有字母數字下划線組成,開頭不能是數字。而且,PHP中變量區分大小寫!!
$name,$Nnme,$NAME都是不同變量;
但是,PHP的內置函數不區分大小寫!echo EcHo都是有效的。
【PHP中的變量類型】
①PHP支持8種數據類型:
4種標量類型:布爾型Boolean 整形integer 浮點型float/double 字符串string
2種復合類型:數組Array 對象Object
2種特殊類型:資源Resource 空null。
②整形的范圍從-2^32~-2^32-1,超出這個范圍,自動轉為浮點型。
【PHP中算false的情況!!!】
1、Boolean false
2、整形 0
3、浮點型0.0
4、字符串"" "0"("0.0" "0000"都算對)
5、空數組
6、空對象只在PHP4版本算false,其他版本都算true。
7、Null和尚未定義的變量
8、所有資源都算對!!(除PHP4,所有對象也算對)
【PHP中字符串的聲明】
PHP支持3種方式聲明字符串:
①'':如不需要解析變量,單引號執行效率更快(細微差別)
②"":習慣上比較常用
③<<<(定界符):$str=<<<s(定界標識符)
//定界標識符聲明字符串,通過<<<(定界標識符)開始
//遇到定界標識符結束!!!前面連一個空格都不能有!
//定界標識符可以是任意字母,只需要保持開始和結束一致即可。
s;
④三種方式的區別:
a:定界符功能默認與雙引號相同。定界符中可放雙引號。
b:單引號中,不能解析變量。而雙引號、定界符都可以解析變量。
注意:雙引號中解析變量時,變量名應使用空格分隔,推薦使用{}包起來。
c:各引號中可互相套用,但是不能放與自身相同的引號。
d:單引號中,不能使用轉義字符(但是除了'本身,轉義字符\本身),雙引號中,可以使用轉義字符。
【PHP中的偽類型】
偽類型:並不是一種真實存在的數據類型,它的存在僅僅是用來告訴程序員可以是那些、那種數據類型。常用於撰寫幫助文檔時使用:
mixed:代表參數可以是多種數據類型;
Number:代表參數可以是integer或者float;
callback:代表參數可以是一個回調函數;
【PHP中的數據類型轉換】
1.自動類型轉換:表示運算的時候,Boolean、Null、String等類型,會自動轉為integer或float類型。
Null——>0
true——>1
false——>0
string——>轉非數值前的數字,沒有轉為0
2.強制類型轉換:根據我們的需要,強制將變量轉換為其他類型的變量;
①使用()聲明新類型強轉;
②使用settype();函數強轉;
bool settype(mixed var,String type);第一個參數表示任何類型的變量;第二個參數表示字符串類型的數據類型,返回Boolean結果。
③兩種方式區別:
第①種,是將轉換后的結果,賦給新變量;
第②種,直接修改了原變量的數據類型;
$新變量=(新類型)$原變量;
//新類型,可以使用全拼,也可以使用縮寫
(int),(integer) - 轉換成整型
(bool),(boolean) - 轉換成布爾型
(float),(double),(real) - 轉換成浮點型
(string) - 轉換成字符串
(array) - 轉換成數組
(object) - 轉換成對象
bool settype(mixed var,String type)
【PHP判斷變量類型的測試函數】
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():判斷是否是有效的函數名
【PHP中的輸出語句】
echo "……";輸出變量的值。
var_dump(num);輸出變量的數據類型和值[和一些其他信息]。
print_r();專用於打印數組。
【PHP中常量的定義和使用】
1、常量的定義:bool define(string 常量名,mixed任何類型的常量值[,bool 是否區分大小寫]);
2、常量的注意事項:
①常量定義只能使用define()函數;
②常量名,原則上要求必須使用大寫聲明。而且必須不能使用$聲明($只能是變量);
③常量聲明以后,默認全局范圍有效,沒有作用域之說。
④常量不但不能改,而且不能刪!unset,settype等函數均無效。
⑤常量默認區分大小寫,但是可以在聲明常量時,將define函數的第三個參數改為true,即可改為不區分大小寫。
⑥常量必須使用define()定義后才能使用。如果使用未聲明的常量,則默認轉為常量字符串。但是,會報警告!
var_dump(NUM);————>String "num"
⑦常量的值,只能是標量Boolean、String、integer、float。
3、可以使用constant("")讀取常量值,沒卵用!
可以使用get_defined_constants(),獲取已定義的常量!包含系統自定義的N多個常量。
代碼示例:
<?php header ("Content-Type:text/html; charset=utf-8"); $num=1; $num="哈哈"; echo $num; $num1=$num2=$num3=5; echo $num1; echo isset($num1); var_dump(empty($num1)); $isTrue=""; if($isTrue){ echo "這是true"; }else{ echo "這是false"; } echo "<br/><br/><br/>"; $str1='hahah{$num1}hahah\'ah1 '; echo $str1; $str2="hahahhah{$num1}ahah2"; echo $str2; $str3=<<<str 123 456 789 str; echo $str3; function func1(){ define("NUM",12,true); } func1(); echo "<pre>"; print_r(get_defined_constants()); echo "</pre>"; #var_dump(num);
PHP中的運算符
【運算符】
1、算術運算符:
+,-,*,/,%,++,--
2、賦值運算符:
= += -= *= /= %= .=(連接字符串)
3、比較運算符:
< > <= >= == === <>或!= !==
==:要求值相等,而不需要數據類型相等;
===:要求之和數據類型都相等;
!=:只比較值,值相等為false;
!==:比較值和類型,都相等為false;
4、邏輯運算符:
and/&& or/|| not/! xor(異或)
&&和||進行運算的時候會發生短路,當左側判斷出結果的時候,右側不再執行(&&左側為假時,結果為假;||左側為真時,結果為真)
xor:邏輯異或。兩邊只有一個對的結果為true;兩邊都對或者都錯結果為false。
5、位運算符:將10進制轉為2進制,然后在進行運算。
&:按位與。轉成2進制后,兩個都為1,結果才為1。eg:12&12——>1100&1100=1100=>12;
|:按位或。轉成二進制之后,有一個為1,就是1;
^:按位異或。轉成2進制后,兩個不相同同為1;都為0或都為1,結果為0;
~:按位取反轉成2進制后,所有位數取反,再轉為10進制數輸出(!!!!!規律:即~n——>-(n+1))
<<:按位左移:轉成二進制后,左移幾位,右邊空余位數補0。(!!!!規律:num<<n——>num*2^n)
>>:按位右移:轉成二進制后,右移幾位,左邊空余位數補0。(!!!!規律:num>>n——>num/2^n)
6、其他運算符
?::表達式1?表達式2:表達式3:表達式1成立執行表達式2,否則執行3。
``:調用系統都是環境下的命令行並執行,但是由於安全性以及跨平台性,我們並不提倡使用:eg:`ipconfig`
@:錯誤信息控制符。可以臨時屏蔽掉一些小的錯誤信息。但是不提倡使用!
=>:數組下標指向
->:對象
【可變變量】
在一個 變量名前邊,再加一個$符號。即可將第一個變量的值,作為新變量的名字。
$hello="hello1";
$$hello="world";//$hello1
$$$hello="liu";//$world
&:取址符號。變量名前加&符號,取到當前變量的引用地址(變量在內存中的地址)。
$num2=&$num1;//取出num1的地址給num2,相當於我們說的引用數據類型。num2和num1的值將同時改變。
代碼示例:
PHP中,利用代碼實現a和b的交換 $a=10; $b=8; #智障級 $c=$a; $a=$b; $b=$c; #凡人級 $a=$a+$b; $b=$a-$b; $a=$a-$b; #神經級 $a=$a^$b; $b=$a^$b;//$a^$b^$b $a=$a^$b;//$a^$b^$a /* * 分析: * 8-------00001000 * 10------00001010 * ^-------00000010 */ echo $a.",".$b;
PHP中分支和循環結構
【PHP中的分支結構】
if中的判斷條件:詳見上面講到的判斷條件;
elseif:PHP中elseif語句可以連寫,也可以分開寫;
switch:PHP中的switch結構,采用松散比較(==)判斷,與Js不同!!!!!
>>>注意:php中,continue可以用於switch結構,作用與break相同!
PHP中continue和break可以后接數字,表示跳過幾層循環或switch。例如:break 3代表終止3曾循環
do-while:循環最后,必須加;分號。
>>>eg:do{}while();
具體結構可大致參閱博主之前分享的Js中的循環。
【流程控制語句】
1、break:終止本層循環;break后面可以接數字,表示終止幾層循環 break 3;終止3層循環
2、continue:跳過本次循環;continue后面可以接數字,表示跳過幾層循環
3、return:結束函數,並返回值(如果有),但是只有函數中能用,腳本中不建議使用return
4、exit(mixed 結束語)/die(mixed 結束語)函數:直接結束當前的PHP腳本!如果有參數傳入,則先打印出結束語,然后結束當前腳本。
代碼示例:
//利用分支循環結構實現表格並填入指定數字。 echo "<table style='width: 500px; border: 1; border-collapse: collapse; '>"; for($i=0;$i<10;$i++){ if($i%2!=0){ echo "<tr bgcolor='red'>"; }else{ echo "<tr bgcolor='green'>"; } for($j=0;$j<10;$j++){ echo "<td style='border: 1px solid black';>"; echo $i.$j; echo "</td>"; } echo "</tr>"; } echo "</table>";
本期分享就到這里,覺得內容不錯的小伙伴請點推薦,歡迎大家在評論下方評論區與博主互動,謝謝大家!
未完、待續。。。
