第1章 PHP概述
1.1 歷史(PHP4、PHP5、PHP5.3、PHP6[未發布])
1.2 一般語言特性(實用性、強大功能、可選擇性、成本[開源])
第2章 環境配置
2.1 安裝的前提條件(apache或IIS7)
2.2 在Linux上安裝Apache和PHP
2.3 在Windows上安裝Apache和PHP
2.4 在Windows上安裝IIS和PHP
2.5 測試安裝
2.6 配置PHP
2.7 運行時配置
2.8 選擇代碼編輯器
2.9 選擇WEB托管服務商
第3章 PHP基礎
3.1 在Web頁面中嵌入PHP代碼
3.2 為代碼添加注釋
<?php echo "hello world!" ?> //默認語法 <? echo "hello world!"?> #短標簽 /* 這是一段多行注釋*/
3.3 向瀏覽器輸出數據
//print語句,如下兩句輸出結果相同 <?php print("<p>Hello PHP!</p>"); ?> <?php $str="PHP";print "<p>Hello $str!</p>"; ?>
//echo語句,幾乎等同於print <?php $str1="A";$str2="B";echo $str1." and ".$str2; ?>
//printf語句,輸出由靜態和若干變量動態信息的混合 <?php printf ("<p>%d bottles of tonic water.</p>",100) ?> /* %b 整數,顯示為二進制 %c 整數,顯示為對應ASCII字符 %d 整數,顯示為有符號十進制 %f 浮點數,顯示為浮點數 %o 整數,顯示為八進制 %s 字符串,顯示為字符串 %u 整數,顯示為無符號十進制 %x 整數,顯示為小寫十六進制 %X 整數,顯示為大寫十六進制 */
//sprintf語句,輸與printf類似,但它將輸出賦值給一個字符串 $cost=sprintf("$%.2f",43.2);//$cost=$43.20
3.4 PHP支持的數據類型
標量數據類型:布爾型、整型、浮點型(單精度[float]、雙精度[double]、實數[real number])、字符串
復合數據類型:數組、對象
類型強制轉換操作符
/* (array) 轉為數組 (bool)或(boolean) 轉為布爾值 (int)或(integer) 轉為整數 (object) 轉為對象 (float)或(double)或(real) 轉為浮點數 (string) 轉為字符串*/ $score=(int) 14.8; echo $score;//14 $str="this is str"; echo (int) $str;//0 $score=114; $scoreboard=(array) $score;echo $scoreboard[0];//114,數字被轉換為數組的一個成員 $name="Gavin"; $obj=(object) $name; echo $obj->scalar;//Gavin,任何數據都可轉為對象,並默認成為對象的scalar屬性
類型自動轉換
$num=5;$str="15px";echo $num+=$str;//20,字符串自動轉整數 $str="1.0";if($str) echo "this is true";//this is true,字符串自動轉布爾型 $val1="1.2e2";$val2=2; echo $val1*$val2;//240,字符串轉整數
與類型有關的函數:gettype(獲取類型)、settype(轉換類型)
$val1="1.2e2";echo gettype($val1);//string //共有8個可能的返回值:array、boolean、double、integer、object、resource[資源]、string和unknown type
$val1="15px";echo settype($val1,"integer")."+".$val1;//1+15 //轉換成功返回true,可以指定的7種類型:array、boolean、float、integer、null、object、string
類型判斷函數
//is_array,is_bool,is_float,is_integer,is_null,is_numeric,is_object,is_resource,is_scalar,is_string $num=43;printf("\$num is of type integer:%d<br/>",is_integer($num));//43 is of type integer:1
3.5 標識符(即自定義名稱,區分大小寫)
3.6 變量
變量聲明:以美元符$開頭,遵循標識符的命名規范,不需要顯示的聲明
$val1="red";//按值賦值 $val2=& $val1;//引用賦值,$val2和$val1都等於“red”
變量的作用域:局部變量、函數參數、全局變量、靜態變量(變量名前加關鍵字STATIC,函數退出不會銷毀,再次調用函數可使用緩存)
PHP的超級全局變量:$_SERVER、$_GET、$_POST、$_COOKIE、$_FILES、$_ENV、$_SESSION
變量的變量
$str="A";$A="B";echo $$str;//B,$$str相當於$A
3.7 常量(一旦定義無法修改,使用define()函數定義)
define("PI",3.1415926);printf("<p>The value of PI is %f</p>",PI)
3.8 表達式
操作數(通常指變量)
操作符:操作符的優先級和結合性,操作符種類(算術、賦值、字符串、自增自減、邏輯、相等、比較、位)
$a="abc"."def";//abcdef,字符串拼接看,這里.相當於JS中的+ $a.="ghi";//abcdefghi,拼接賦值,這里.=相當於JS中的+=
3.9 字符串插入
雙引號(包裹字符串)
轉義序列
單引號(與雙引號不同,解析時變量和轉義序列不會被解釋)
大括號(常用於嵌入復雜數據類型,如{$arr['name']})
heredoc(用於輸出大量文本)
Nowdoc(php5.3新特性,等同於heredoc)
$a="abc";echo "$a is good \n";//abc is good,雙引號解析 $a="abc";echo '$a is good \n';//$a is good \n,單引號不解析
3.10 控制結構
條件語句:if、else、elseif、switch
循環語句:while、do...while、for、foreach、break和goto和continue
文件包含語句:include、include_once、require(與include的區別是在if為假,依然請求指定文件到當前位置)、require_once
第4章 函數
4.1 調用函數
4.2 創建函數
function fun1($a){$a+=1;};$num=1;fun1($num);echo $num;//1,按值傳遞參數,函數內修改變量的值,不影響其函數外的值 function fun2(&$a){$a+=1;};$num=1;fun2($num);echo $num;//2,按引用傳遞參數,函數內修改變量的值,函數外同步修改
function fun($a,$b=2){echo $a*$b};$num=5;fun($num);//10,$b為參數默認值
function fun(){return array("red","blue","green");};list($r,$b,$g)=fun();echo "$r,$b,$g"; //return函數返回值,需要返回多個值時使用數組,list()函數給一組變量賦值
function fun($a){if($a>0){return $a+fun($a-1);}};echo fun(5);//15,遞歸函數
4.3 函數庫
第5章 數組
5.1 什么是數組
5.2 創建數組
$arr1[0]="one";$arr1[1]="two";//直接建立引用即可 $arr2[]=1,$arr2[]=2;//若索引值是數值且遞增,創建時可省略索引值 $arr3["name"]="gavin",$arr3["age"]=30;//創建關聯數組,不過必須一直使用鍵 $arr4=array("one","two");//使用array()創建索引數組 $arr5=array("name"=>"gavin","age"=>30);//使用array()創建關聯數組
$arr=array("one","two");list($a,$b)=$arr;echo "$a + $b";//one + two,list函數提取數組 $die=range(1,5);//range函數預定義值來填充數組,類似$die=array(1,2,3,4,5) $state=array(1,2);printf("\$state is array:%s",(is_array($state)?"true":"false"));//is_array函數測試數組
5.3 輸出數組
$arr=array("one","two");foreach($arr AS $a){echo "{$a}\n";};//使用foreach遍歷輸出,多維數組可考慮vprintf函數 print_r($arr);//Array ( [0] => one [1] => two ),打印數組用於測試
5.4 添加和刪除數組元素
$arr=array("two"); array_unshift($arr,"zero","one");print_r($arr);//在數組頭添加一個或多個 array_push($arr,"three","four");print_r($arr); //在數組尾添加一個或多個 echo array_shift($arr)."\n";print_r($arr); //在數組頭刪除,返回刪除值,每次刪除一個 echo array_pop($arr)."\n";print_r($arr); //在數組尾刪除,返回刪除值,每次刪除一個
5.5 定位數組元素
$a="one";$arr=array("one","two");if(in_array($a,$arr)){echo '$a in $arr'}//搜索數組,返回布爾值 $arr["one"]=1;if(array_key_exists("one",$arr)){echo 'one in $arr';}//搜索關聯數組鍵,返回布爾值 $key=array_search(1,$arr);if($key){echo "$key : $arr[$key]";}//搜索關聯數組值,如果找到返回相應鍵,否則false
$arr=array("name"=>"gavin","age"=>30); print_r(array_keys($arr));//Array ( [0] => name [1] => age ),獲取數組的鍵組 print_r(array_values($arr));//Array ( [0] => gavin [1] => 30 ),獲取數組的值組
5.6 遍歷數組
$arr=array("name"=>"gavin","age"=>30); while(key($arr)){echo key($arr)."\n";next($arr);}//name age,遍歷數組鍵 reset($arr);//重置指針到數組首位,(next)下一位、(prev)上一位,(end)末尾位 while(current($arr)){echo current($arr)."\n";next($arr);}//gavin 30,遍歷數組值
5.7 確定數組的大小和唯一性
$arr=array("a","b");echo count($arr);//2,count確定數組大小,與sizeof相同 $arr1=array("a","b","c","a");print_r(array_count_values($arr1));//統計數組元素出現的頻次 //Array ( [a] => 2 [b] => 1 [c] => 1 ) print_r(array_unique($arr1));//刪除重復項
5.8 數組排序
$arr=array("one","two","three"); print_r(array_reverse($arr));//數組倒序,Array ( [0] => three [1] => two [2] => one ) print_r(array_flip($arr));//數組鍵和值對換,Array ( [one] => 0 [two] => 1 [three] => 2 ) sort($arr);print_r($arr);//數組排序,破壞鍵值關聯,Array ( [0] => one [1] => three [2] => two ) $arr=array("one","two","three");//重置 asort($arr);print_r($arr)//同sort,保持鍵值關聯,Array ( [0] => one [2] => three [1] => two ) rsort(array);//與sort相同,排序相反 arsort(array);//與asort相同,排序相反 natsort(array);//自然排序 natcasesort(array);//不區分大小寫的自然排序 ksort(array);//按鍵值對數組排序 krsort(array);//與ksort相同,排序相反 usort(array,callback);//根據自定義規則排序
5.9 合並、拆分、接合和分解數組
array_merge(array1,array2);//合並兩個或多個數組 array_merge_recursive(array1,array2);//與array_merge相同,僅關聯數組出現相同鍵時,前置是替換,它是將值合並為數組 array_combine(keys,values);//將鍵數組和值數組,組合為新的關聯數組,兩者大小要相同且不為空 array_slice(array,[offset,[length]]);//拆分數組 array_splice(array,[offset,[length]]);//接合數組 array_intersect();//求數組的交集 array_intersect_assoc();//求關聯數組的交集 array_diff();//求數組的差集 array_diff_assoc();//求關聯數組的差集
5.10 其他有用的數組函數
array_rand(array[,num]);//返回一組隨機的鍵 shuffle();//隨機洗牌數組元素 array_sum();//對數組中的值求和 array_chunk();//划分數組
第6章 面向對象的PHP
6.1 OOP的好處(封裝、繼承、多態)
6.2 關鍵的OOP概念(類、對象、屬性)