一、php簡介
PHP超文本預處理器。是嵌入HTML文件中的服務器腳本程序。
PHP代碼標記:<?php …. ?>
PHP文件的擴展名:.php
PHP文件的執行:必須從域名開始訪問
PHP每條語句必須以英文(;)結束
二、php網頁基礎知識
① IP地址
IP地址分為v4、v6兩個版本,v4長度為32位2進制碼,v6為128位2進制碼。v4版本IP在2010年左右已經用完,主要格式是192.168.4.238(點分十進制法),由四段組成,每段8位二進制,用十進制表示的取值范圍為:0-255
特殊IP:127.0.0.1用於本機的軟件測試或網站測試,只能自己訪問自己的127。
② 域名解析器(DNS服務器)
可以理解為,儲存了域名與IP地址對應表的數據庫
本地的DNS:hosts文件,一個隱藏的系統文件,沒有擴展名。當在瀏覽器中輸入域名時,首先在本地DNS查找有無對應IP然后才在外網DNS查找對應IP。hosts文件的路徑:C:\Windows\System32\drivers\etc\hosts
③ 域名解析,訪問流程圖
三、php基礎語法
① php變量
php變量必須以”$”開頭,例如:$name、$age
不能以數字開頭,最后按照駝峰命名法
寫在””引號中的變量最好用 { } 括起來,以免出現末端有字符不解析的情況
② php數據類型
標量數據類型:字符串型、整型、浮點型、布爾型
復合數據類型:數組、對象
特殊數據類型:資源、NULL
(1)整型
取值范圍:-21億~21億
(2)浮點型 (可以包含整數)
取值范圍:-1.7E-308~1.7E+308
由於浮點數不能轉換成精確的二進制,所以有時在運輸時會出現錯誤,例如:(0.7+0.1)*10==8 結果為false
(3)字符串型(在引號中,解析變量,需在變量后加上符合或者空格)
- 雙引號“”
雙引號內解析變量的值
- 單引號‘’
單引號內解析變量的名,直接在客戶端顯示$name
- 長字符串
$Str = <<<heredoc “heredoc”的名字可以隨意取,按照變量命名規則
……. 填寫字符串內容
heredoc; 結尾“heredoc”必須另起一行,分號結束
(4)資源型
對第三方插件等的操作,如調用mysql數據庫等,第三方的內容稱之為資源
(5)布爾型
只有true或false兩種類型值
(6)NULL (空型)
如果變量不存在,返回NULL,空型只有一個值,就是NULL
(7)數組(一組數的集合,通過索引查找元素)
a ) 數組的分類:
1. 索引數組 (與js數組基本相同)
數組的下標是從0開始的正整數,這樣的數組稱為“索引數組”
$arr=array(10,20,30,40);
$arr[0]=10;
2.關聯數組
數組的下標是字符串,這樣的數組稱為“關聯數組”
$arr=array(“name”=>”Tabb”,”sex”=>”gender”,”age”=>”22”);
由於關聯數組沒有整數型下標,所以不適合使用for循環來遍歷
3. 混合數組
數組下標既有整型,也有字符串,這樣的數組稱為“混合數組”
$arr = array("name" => "tabb", "age" => "20", "tom", 20);
echo $arr[0] 輸出結果為“tom”;說明整型下標是從”tom”開始計算的
b ) 數組的創建:
1. 使用array()函數創建數組:
通過“=>”重載符號給數組元素指定下標
如果數組元素沒有指定下標,其下標為,當前最大索引+1,示例:
$arr=array(20=>”tabb”,2=>”28”,20,”tom”) 其中”20”的索引為21,如果都是字符下標,那么沒有指定下標的元素,索引從0開始
使用array創建數組:
$arr = array([$key=>]$value,[$key=>]$value,…);
2. 使用[ ]中括號創建數組
$arr[“key”]=$value
不像js,可以不用先聲明一個空數組,如果指定的數組不存在,會自動創建數組
[ ] 中括號內容為空時,創建數組
$arr[ ]=30;
如果數組不存在,就會創建一個數組,並添加第一個元素
如果數組存在,添加數組的元素的下標,是數組中的最大整形下標+1
c ) 多維數組:
array(array(1,2,3,4),1,2,3,array(1,2,3,4))
使用[ ]中括號可以快速創建多維數組:
$arr[ ][ ][ ][ ]=10; 快速創建一個4維數組
d ) 數組相關函數:
1. print_r ( )
打印關於變量的易於理解的信息
如果給出的數組或者對象,按照一定格式顯示鍵和元素
2. unset ( )
刪除數組元素,刪除的是數組元素的值,下標還存在,不同於js的長度不變,此處刪除元素后,數組長度發生變化
刪除變量
3. count ( )
計算數組中的單元數目或對象中的屬性個數
4. foreach ( ) 只能用於遍歷數組
foreach( $arr as [$key=>]$value ){ } 如果是索引數組,[$key=>]這個內容可以不要
③ php數據類型判斷
(1) var_dump()
打印變量的相關信息,可以打印多個變量,用”,”逗號隔開
(2) is_*() 一組判斷變量類型的方法,返回一個布爾值
- is_bool():判斷變量是不是布爾型
- is_int():判斷變量是不是整型
- is_float ():判斷變量是不是浮點型
- is_numeric():判斷變量是不是數值型
- is_string():判斷變量是不是字符串型
- is_array():判斷變量是不是數組型
- is_object():判斷變量是不是對象型
- is_null():判斷變量是不是空型
- is_resource():判斷變量是不是資源型
……
(3) isset()
檢測變量是否設置
返回值:如果變量存在,且不等於NULL,返回true,否則,返回false
(4) empty ( )
檢測一個變量是否為空,例如””,0,”0”,null,array(),var $var 以及沒有任何屬性的對象都將被認為是空,如果為空,返回值TRUE
④ 數據類型的轉換
(1)轉換為bool值 (bool)
$a = "0";
$result = (bool)$a;
var_dump($result) 結果為: bool(false)
這些數據轉換為bool值時為false:0、0.0、””、”0”、array()、null
資源類型轉換為bool永遠為true
(2)轉換為整型數值 (int) (int)$name
1.如果以數值開頭的字符串,將整型部分轉換為整型數值,去除后面的字符
2.如果不是數值開頭的字符串,轉換為0
3.bool值true轉換為1,false轉換為0,null轉換為0
(3)轉換為浮點數值 (float) (float)$name
1.如果以數值開頭的字符串,將數字部分轉換為數值(包含浮點部分),去除后面的字符
2.如果不是數值開頭的字符串,轉換為0
3.bool值true轉換為1,false轉換為0,null轉換為0
(4)轉換為字符串 (string) (string)$name
1.null、false轉換為””,空字符串
2.true轉換為字符串“1”
⑤ php運算符
(1)數值運算符(+、-、/、*、%、++、--)
使用方法與js中的使用方法基本相同
(2)字符串運算符
“.”點運算符表示字符串鏈接符,與js中用”+”號拼接字符串類似
$a=”abc”;
$b=$a.100 或者使用”.=”表示自己與自己鏈接字符串:$a.=100
(3)賦值運算符(=、+=、-=、*=、/=、%=)與js基本相同
(4)比較運算符(>、<、>=、<=、==、!=、===、!==)與js基本相同
舉例:10==“10px” 結果為:true;在包含數字的運算中“10px”會先轉換為數值
舉例:10===“10px” 結果為:false; 全等比較,包括數據類型
(5) 邏輯運算符(&&、||、!)與js基本相同
(6) 三元運算符(表達式?結果1:結果2)與js基本相同
(7) 運算符優先級
⑥ php獲取表單數據
<form method="get" action="">
用戶名:<input type="text" name="username">
密碼:<input type="text" name="password">
<input type="hidden" name="ac" value="login"> //隱藏域,向后端傳遞信息
<input type="submit">
</form>
(1) 超全局數組變量:$_GET[ ]
獲取get方法提交的數據,存放到GET數組中
array(2) { ["username"]=> string(6) "abcdef" ["password"]=> string(5) "12345" }
獲取其中的數據示例:$username=$_GET[“name”]
(2) 超全局數組變量:$_POST[ ]
獲取post方法提交的數據,存放到POST數組中
⑦ php中的條件判斷if和switch 與js基本相同
switch比if的效率高,主要用於取值判斷
⑧ php中的循環語句
(1)while(條件判斷){ break } 與js基本相同
(2)for(條件判斷){ } 與js基本相同
(3)break語句 可以添加break 2表示跳出兩層循環
(4)continue語句 跳出本次循環,直接開始下次循環
⑨ php中的拷貝傳值和引用傳地址
(1) 拷貝傳值
將一個變量的值,“復制”一份,傳遞給另一個變量,這兩個變量之間沒有關系,是相互獨立的兩個變量,修改其中一個變量,另一個變量不會變
php中屬於拷貝傳值的數據類型為:字符型、整型、浮點型、NULL、數組
(2) 引用傳地址
將一個變量的數據地址,“復制”一份,傳遞給另一個變量,這兩個變量指向的是“同一標物”,如果這個”標物”發送變化,兩個變量都會發送變化。所以修改一個變量的值,則另一個變量也會發生變化。
php中屬於引用傳地址的數據類型為:對象、資源
手動聲明引用傳地址:在引用變量前,加上“&”符號即可,這樣可以使所有的數據類型實現引用傳地址,示例如下
$a=10; $b=&$a; 這樣即是把$a的引用地址傳地給了$b
⑩ php中的函數 與js基本相同
示例如下:
function name ($name) { //函數名不能相同,只能唯一存在,且不帶$符號
echo “{$name}的年齡是20”;
return;
}
(1)函數的參數可以傳遞引用地址:
function test ( &$a,$b ){ //此處傳遞的是$a的引用路徑
$arr[ ]=$abc;
}
(2)函數的作用域:
全局變量:在函數外部定義的變量,網頁執行完消失
局部變量:在函數內部定義的變量,函數執行完消失
不同與js,在php中,全局變量不能直接在函數內部使用
在php函數中使用global關鍵字聲明全局變量
使用global關鍵字,可以將一個變量,聲明為全局變量,這里的全局變量不是js中認為的全局變量
global關鍵字的使用:
- global關鍵字,只能在函數內部使用。
- global關鍵字,不能一邊聲明全局變量,一邊賦值。不能有這樣的寫法:
global $a=10;
- global的真正含義,是“引用傳地址”,與js中的全局變量不同
(3)php日期時間函數:
1. date( );
echo date(“Y-m-d H:i:s”); 輸出時間,可改為Y年m月d日
2. time( ); 時間戳 1970年到當前的秒數(js是毫秒)
(4)include 語法結構
描述:包含並運行指定文件
語法:include $filename 或者 include($filename);
示例:include “include/conn.php”;
(5)requrie 語法結構
描述:包含並運行指定文件
語法:requrie $filename 或者 requrie ($filename);
示例:requrie “include/conn.php”;
注意:include與require都是包含並運行文件,但是是有區別的。如果包含的文件不存在,include將報一個警告錯誤,腳本繼續向下運行。而require將報一個致命錯誤,腳本將立即終止執行。
(6)header()
描述:發送一個自定義的http報文,即:php返回的數據格式或字符集
語法:void header( string $string)
示例:
※ header(“content-type:text/html;charset=utf-8”);
※ header(“location:http:www.baidu.com”); //網頁跳轉