讀書筆記《PHP與MySQL程序設計》一


第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概念(類、對象、屬性)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM