[if !supportLists]1.[endif]PHP基礎(chǔ)(變量的八種類型、empty和isset、null、變量類型的自動和強制轉(zhuǎn)換、常量、運算符(算術(shù)、比較、邏輯、三元運算符))
1.變量的八種類型
整型,字符串,浮點型,布爾型,數(shù)組,面向?qū)ο螅Y源,null
[if !supportLists]1.[endif]Empty
如果參數(shù)是非空或非零的值,則返回false,反之則為true。
empty為true的情況:
00.0“”空字符串“0”字符串零falsenullarray()空數(shù)組
沒有任何屬性的對象
2.
isset檢測變量是否設(shè)置
3.
unset釋放給定的變量
4.
null空變量
三種情況為null:
1.直接賦值為null
2.被unset銷毀的變量
3.為被賦值的變量
2.變量類型的自動和強制轉(zhuǎn)換
1.自動轉(zhuǎn)換
1).布爾值true自動轉(zhuǎn)換1,false自動轉(zhuǎn)換為0或空
2). Null自動轉(zhuǎn)換0
3).如果字符串首字符不是數(shù)字,那么就轉(zhuǎn)換為0,再參與運算
2.強制類型轉(zhuǎn)換有三種方式
第一種方式(int)(float)(string)(bool)
第二種方式intval(變量)floatval(變量)strval(變量)
第三種方式settype(變量,變量類型);
3.常量
1.定義一次,就不能改變它的值
2.定義常量define('常量名(要大寫)',值)
3.判斷常量是否被設(shè)置defined(‘常量名’)
4.運算符(算術(shù)、比較、邏輯、三元運算符))
1.算術(shù)運算符+-*/%++--
++$i前加加先自增再賦值
$i++后加加先賦值再加加
2.字符串連接符(.)
3.賦值運算符
把值賦給變量(=)
字符串拼裝的作用(.=)
4.比較運算符
等于( == )
全等于( === )不僅僅考慮值相等,變量的類型也要相等
5.邏輯運算符
邏輯或||or:符號兩邊只要有一邊為true,結(jié)果則為true
邏輯與&&and:符號兩邊都為true,結(jié)果才為true
邏輯非(取反)!
注:邏輯運算符短路問題
1).當(dāng)邏輯與&&判斷時,符號左邊如果為false,則不會繼續(xù)執(zhí)行符號右邊的
$a = 1;
if($a ==2 && $a++){
echo $a;//什么都沒有
}
echo $a;//輸出1
2).當(dāng)邏輯或||判斷時,符號左邊如果為true,則不會繼續(xù)執(zhí)行符號右邊的
$a = 1;
if($a == 1 || $a++){
echo $a;//輸出1
}
6.位運算符
1).按位與&兩邊都是1,結(jié)果才為1
$a = 10;// 01010
$b = 20;// 10100
//----------------------
//00000
echo $a&$b;//輸出0
2).按位或|兩邊都是0,結(jié)果才為0
$a = 10;//
01010
$b = 15;// 01111
//---------------------
//01111
echo $a|$b;//輸出15
7.三元運算符(? :)
$a = '哇哈哈'
$str=($a=='哇哈哈')?'哇哈哈':'阿童木';
echo $str//輸出哇哈哈
注:三元運算符中不能加echo
2、PHP語句(if、else、switch、while、do...while、for、break、continue、exit、die)
1.單一分支結(jié)構(gòu)
If(滿足條件也就是轉(zhuǎn)化為bool型true){
//執(zhí)行大括號里的代碼塊
}
2.雙向條件分支結(jié)構(gòu)
if(empty($a)){//true執(zhí)行下面的代碼如果為false執(zhí)行else區(qū)間的代碼
echo '男';
}else{
echo '女';
}
3.switch開關(guān)的意思判斷字符串或者整型浮點型只能判斷是還是不是
$a = '3';
switch($a){
case '5':
echo '5';
break;//跳出代碼塊
case '6':
echo '6';//后不加break,會穿透執(zhí)行
break;
default://默認(rèn)選項當(dāng)前面的選項都不滿足的時候默認(rèn)執(zhí)行此代碼
echo '哇哈哈';
}
4.for循環(huán)(九九乘法表)
//正序的九九乘法表
for($i=1;$i<=9;$i++){//初始值0;范圍小于5;步長1;
for($j=1;$j<=$i;$j++){
echo $j.'x'.$i.'='.$i*$j."\t";//會輸出這樣格式的1x1=1等。。。
}
echo'
';
}
//倒序的九九乘法表
for($i=9;$i>0;$i--){
for($j=$i;$j>0;$j--){
echo$i.'x'.$j.'='.$i*$j."\t";//會輸出這樣格式的9x9=81等。。。
}
echo'
';
}
5.while只有條件滿足,才會執(zhí)行(九九乘法表)
//正序的九九乘法表
$i=1;
while($i<=9){//滿足小括號里的條件才會執(zhí)行代碼塊
$j=1;
while($j<=$i){
echo$j.'x'.$i.'='.$i*$j."\t";//會輸出這樣格式的1x1=1等。。。
$j++;
}
echo'
';
$i++;
}
//倒序的九九乘法表
$i=9;
while($i>0){
echo '
';
$j=$i;
while($j>0){
echo$i.'x'.$j.'='.$i*$j."\t";//會輸出這樣格式的9x9=81等。。。
$j--;
}
$i--;
}
6.do...while不管條件滿不滿足,先執(zhí)行一遍再說
$i=0;
do{//先執(zhí)行大括號里的代碼再說,再去判斷while滿不滿足滿足就繼續(xù)執(zhí)行不滿足,終止執(zhí)行
echo '阿薩姆';
}while($i>1);
7.break、continue、exit、die
break滿足條件,終止執(zhí)行
continue跳過滿足的條件,繼續(xù)執(zhí)行
exit無條件終止執(zhí)行
die函數(shù)是exit函數(shù)的別名
3、PHP函數(shù)(函數(shù)的聲明和調(diào)用、局部變量和全局變量、靜態(tài)變量、可變變量函數(shù)、回調(diào)函數(shù)、遞歸函數(shù))
1.函數(shù)的聲明和調(diào)用
函數(shù)完成一定功能按特定格式組織一段代碼,參數(shù)傳進(jìn)去值返回,相同的代碼可以聲明一次無限次調(diào)用。函數(shù)名不能重名,也不能和系統(tǒng)函數(shù)同名,命名規(guī)則遵循變量的命名規(guī)則。
函數(shù)的聲明function函數(shù)名(參數(shù)1,參數(shù)2,參數(shù)3){//形參}
函數(shù)的調(diào)用函數(shù)名(//實參);
函數(shù)的返回值1.可以向函數(shù)調(diào)用者返回函數(shù)體中【任意確定】的值
2.退出函數(shù),也是終止執(zhí)行下面的函數(shù)
注:形參和實參的順序是對應(yīng),不可打亂,也不可少一或多一個。
2.局部變量和全局變量、靜態(tài)變量
[if !supportLists]1.[endif]局部變量
也叫內(nèi)部變量,僅限于函數(shù)內(nèi)部。離開function{
}外輸出會報注意【Notice】
[if !supportLists]2.[endif]全局變量
也叫外部變量,從變量定義處開始,到本程序文件的末尾
[if !supportLists]1.)[endif]global全局的意思,第一種【注意格式的不同】
$a=987654321;
functionalala( ){
global $a;
echo $a;
}
alala();//不用輸出$a
[if !supportLists]2.)[endif]$GLOBALS全局的意思第二種【注意格式的不同】
$b=654;
functioncaca( ){
$GLOBALS
['b'];//沒有$符
}
caca();
echo $b;//要輸出$b
3.靜態(tài)變量
函數(shù)里重復(fù)使用,不會被銷毀的,會有專門的一份內(nèi)存來保存變量,靜態(tài)的內(nèi)存
function jing( ){
static $a=6;
echo '——'.$a;
$a++;
}
jing();//輸出6,不是7(因為前++還是后++;都是從上至下執(zhí)行,都輸出6)
jing();//輸出7
jing();//輸出8
[if !supportLists]3.[endif]各種形式的php函數(shù)
[if !supportLists]1.[endif]賦值傳值
就相當(dāng)于復(fù)制文件,修改當(dāng)中一個文件,并不會影響它自身的內(nèi)容。
[if !supportLists]2.[endif]引用傳值
就相當(dāng)于創(chuàng)建快捷方式,修改其中一個,兩個都會改變,也屬于局部變量
function test(&$num){//使用引用變量,將一個&加到將要賦值的變量前
echo $num;
}
test(2);
[if !supportLists]3.[endif]可變參數(shù)的個數(shù)
function more_args(){//可變參數(shù)的個數(shù)
$args=func_get_args();//獲取函數(shù)的可變參數(shù),它是一個數(shù)組
for($i=0;$i
echo '第'.$i.'個參數(shù)是'.$args[$i].'
';//輸出第一個是one等。。。
}
}
more_args('one','two','three',1,2,3);
4.可變變量以一個變量的值作為另外一個變量的名
$a = 'hello';
$hello ='world';
$world ='perfect';
echo $$a;// world;
echo $$$a;// perfect
[if !supportLists]4.[endif]回調(diào)函數(shù)
回調(diào)函數(shù)不是由該函數(shù)的實現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時由另外的一方調(diào)用的,用于對該事件或條件進(jìn)行響應(yīng)
//程序是自上往下執(zhí)行一定要執(zhí)行完才會繼續(xù)
functionone(){
echo 'one';
two();
echo 'one';
}
functiontwo(){
echo 'two';
three();
echo 'two';
}
functionthree(){
echo 'three';
}
one();//輸出onetwothreetwoone
call_user_func()把第一個參數(shù)作為回調(diào)應(yīng)用
function wahaha($num){
echo'wahaha'.$num;//輸出wahaha4
}
call_user_func('wahaha',4);//也能執(zhí)行函數(shù)的調(diào)用間接調(diào)用
call_user_func_array(被調(diào)用的回調(diào)函數(shù),要被傳入回調(diào)函數(shù)的數(shù)組(索引數(shù)組))
調(diào)用回調(diào)函數(shù),并把一個數(shù)組參數(shù)作為回調(diào)函數(shù)的參數(shù)
[if !supportLists]5.[endif]遞歸函數(shù)
遞歸函數(shù),函數(shù)本身自己調(diào)用自己,任何語言都有,地位還比較重要,可遍歷文件夾、商品分類
1.階乘
function jiecheng($num){
if($num>1){
return$num*jiecheng($num-1);
}else{
return1;
}
}
echo jiecheng(5);//輸出120
//執(zhí)行順序
//return 5*jiecheng(4)
//5*4*jiecheng(3)
//5*4*3*jiecheng(2)
//5*4*3*2*jiecheng(1)
//5*4*3*2*1 = 120
2.斐波尼奇數(shù)列
function shulie($num){
if($num==1||$num==2){
return1;
}else{
returnshulie($num-1)+shulie($num-2);
}
}
//1123581321….
echo shulie(7);//輸出13
4、數(shù)組(數(shù)組的分類定義、遍歷數(shù)組的四種方式、預(yù)定義數(shù)組、常用的數(shù)組函數(shù)、冒泡算法)
數(shù)組的定義
1.索引數(shù)組:下標(biāo)是順序的整數(shù)作索引。
$array=array('a','b','c');
$array[]='simon';
print_r($array);
?>
[if !supportLists]2.[endif]關(guān)聯(lián)數(shù)組:下標(biāo)是字符串作索引。
$a=array(key1=>value1,key2=>value2,key3=>value3);
3.$a[key1]=value1;$a[key2]=value2;
4.通過中括號[ ]定義數(shù)組
$data= ['start_time'=> '123','end_time'=>'456'];
遍歷數(shù)組的四種方式
預(yù)定義數(shù)組
[if !supportLists]1.[endif]服務(wù)器變量$_SERVER:$_SERVER是一個包含諸如頭信息、路徑和腳本位置的數(shù)組。數(shù)組的實體由web服務(wù)器創(chuàng)建,并不能保證所有的服務(wù)器都能產(chǎn)生所有的信息,服務(wù)器可能忽略了一些信息,或者產(chǎn)生了一些其他的新的信息。和其他的超全局?jǐn)?shù)組一樣,這是一個自動的全局變量,在所有的腳本中都有效,在函數(shù)或?qū)ο蟮姆椒ㄖ胁恍枰褂胓lobal關(guān)鍵字訪問它。
[if !supportLists]2.[endif]$_ENV環(huán)境變量:數(shù)組中的內(nèi)容是在PHP解析器運行時,從PHP所在服務(wù)器中的環(huán)境變量轉(zhuǎn)變?yōu)镻HP全局變量的。它們中許多都是由PHP所運行的系統(tǒng)決定的,完整的列表是不可能的,需要查看PHP所在服務(wù)器的系統(tǒng)文檔以確定其特定的環(huán)境變量。
[if !supportLists]3.[endif]URL GET變量:$_GET數(shù)組也是超全局變量數(shù)組,是通過URL GET方法傳遞的變量組成的數(shù)組。它屬于外部變量,即在服務(wù)器頁面中通過$_GET超全局?jǐn)?shù)據(jù)獲取URL或表單的GET方式傳遞過來的參數(shù)。
[if !supportLists]4.[endif]HTTP POST變量$_POST:數(shù)組是通過HTTP POST方法傳遞的變量組成的數(shù)組。$_POST和$_GET數(shù)組之一都可以保存表單提交的變量,使用哪一個數(shù)組取決于提交表單時在表單form標(biāo)記中的method屬性使用的方法是post還是get。但是使用$_POST數(shù)組只能訪問以post方法提交的表單數(shù)據(jù)。
[if !supportLists]5.[endif]HTTP文件上傳變量$FILES:使用表單的file輸入域上傳文件時,必須使用post提交。但在服務(wù)器文件中,并不能通過$_POST超全局?jǐn)?shù)組獲取到表單中file域的內(nèi)容。而$_FILES超全局變量是通過post方法傳遞的已上傳文件項目組成的數(shù)組。$_FILES是一個二維數(shù)組,包含5個子數(shù)組元素,其中第一個下標(biāo)是表單中file輸入域的名稱,第二個下標(biāo)用于描述上傳文件的屬性。
[if !supportLists]6.[endif]HTTPCOOKIES:$_COOKIE超全局?jǐn)?shù)組是經(jīng)由HTTP
Cookies方法提交至腳本的變量。通常這些Cookies是由以前執(zhí)行的PHP腳本通過setCookies()函數(shù)設(shè)置到客戶端瀏覽器中的,當(dāng)PHP腳本從客戶瀏覽器提取了一個cookie后,它將自動把它轉(zhuǎn)換成一個變量,可以通過這個$_COOKIE超全局?jǐn)?shù)組和cookie的名稱來存取指定的cookie值。
[if !supportLists]7.[endif]Session變量:會話控制是在服務(wù)器端使用session跟蹤用戶,當(dāng)服務(wù)器頁面中使用session_start()函數(shù)開啟session后,就可以使用$_SESSION數(shù)組注冊全局變量,用戶就可以在整個網(wǎng)站中訪問這些會員信息。
[if !supportLists]8.[endif]GLOBAL變量:$GLOBALS是由所有已定義的全局變量組成的數(shù)組,變量名就是該數(shù)組的索引。
常用的數(shù)組函數(shù)
見文檔
冒泡算法
/*冒泡算法
* @para $arr傳人進(jìn)去排序的數(shù)組
* @return $newArr排序之后的數(shù)組
*/
functionmaopao($arr){
//一共是多少趟
for($i=?count($arr)-1;?$i>0;?$i--){
$flag= 0;
//每一趟進(jìn)行相鄰兩個數(shù)進(jìn)行比較
for($j= 0;?$j<?$i;?$j++){
if($arr[$j]>$arr[$j+1]){
$temp=?$arr[$j];
$arr[$j]
=?$arr[$j+1];
$arr[$j+1]
=$temp;
$flag= 1;
}
}
if($flag== 0){
break;
}
}
return$arr;
}
$arr=array(30,40,10,50,20,60);
print_r(maopao($arr));
?>
5、字符串(字符串函數(shù))
見文檔
[if !supportLists]6.[endif]正則表達(dá)式
[if !supportLists]7.[endif]會話控制
[if !supportLists]8.[endif]文件(目錄和文件的操作、遍歷目錄、文件上傳、多文件上傳、下載)
[if !supportLists]9.[endif]GD庫、新分使輸銷、驗證碼
[if !supportLists]10.[endif]mysql數(shù)據(jù)庫(增刪改查、關(guān)聯(lián)查詢、php處理mysql的函數(shù))
[if !supportLists]11.[endif]項目登錄、注冊、商品、用戶、分頁功能
[if !supportLists]12.[endif]PHP面向?qū)ο蟆⒊S玫乃膫€類
[if !supportLists]13.[endif]Smarty
[if !supportLists]14.[endif]Pdo
[if !supportLists]15.[endif]異常處理
[if !supportLists]16.[endif]Mvc
[if !supportLists]17.[endif]Thinkphp3.1
[if !supportLists]18.[endif]Linux