轉載來自:https://www.cnblogs.com/liuyongqi/p/6885669.html
(一)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
456
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();
【流程控制語句】
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>";
未完、待續。。。