1.什么是PHP?
PHP(Hypertext Preprocessor)稱之為超文本預(yù)處理器径荔,它是一種通用的開源語言。在服務(wù)器端執(zhí)行的腳本語言虱岂。它的這個(gè)語法混合了c語言试溯,Java了語言键袱,還有這個(gè)Perl語言的一些特點(diǎn)付鹿。它的基礎(chǔ)語法的寫法與javascript谁不,尤其相似谎替。所以對于我們來講,這個(gè)入手會(huì)比其他人要更快一些。
php代碼必須寫在php標(biāo)記中,標(biāo)記外的php代碼不會(huì)被編譯執(zhí)行
/**
* 多行注釋
*/
# 單行注釋
2.語言特點(diǎn)
1. 只能運(yùn)行在服務(wù)器上的腳本語言杠河,向?yàn)g覽器返回HTML結(jié)果
2. 面向?qū)ο笳Z言
3. 開源柳洋,免費(fèi)
4. 學(xué)習(xí)成本低
5. 弱類型語言(變量沒有固定類型,變量的數(shù)據(jù)類型在賦值時(shí)由值的類型決定)测蹲,沒有聲明變量的關(guān)鍵字齿椅,以$a 表示變量(a),注意PHP不允許只聲明變量不給變量賦值。
一、變量
- echo :只能輸出基礎(chǔ)類型的值
- var_dump():可以輸出任意數(shù)據(jù)類型的值 (輸出內(nèi)容包含:值粥帚、 類型[長度])
- print_r():輸出數(shù)組
echo 10;
var_dump(10)
二、數(shù)據(jù)類型
基礎(chǔ)類型
1、string 字符串
2、integer 整型(整數(shù),不區(qū)分正負(fù))
3、double(float) 浮點(diǎn)型(小數(shù))
4、boolean 布爾型
引用類型
6酸舍、array 數(shù)組
7双妨、object 對象
特殊類型
8、null 空
$a = "php is the bast in the world";
echo $a;
echo "<br>";
$b = 10;
echo $b;
$c = 3.1415926;
echo $c;
$d = true;
echo $d;// true 為 1 、false 為 ""
讀取或判斷變量的數(shù)據(jù)類型
1柒桑、gettype(var) : 返回?cái)?shù)據(jù)的變量類型
echo gettype($d);
2、is_type(var) : 判斷變量是否為指定數(shù)據(jù)類型,返回布爾值
echo is_bool($a);
三该溯、運(yùn)算符
1氯庆、算術(shù)運(yùn)算符: + - * / % 实昨,只進(jìn)行算術(shù)運(yùn)算,非數(shù)值會(huì)被強(qiáng)制轉(zhuǎn)化為數(shù)值,如果無法轉(zhuǎn)化為 0 參與運(yùn)算茉继。
2、關(guān)系運(yùn)算符: > < >= <= == != === !==
3氯哮、邏輯運(yùn)算符: and (&&) or(||) ! xor
xor : 異或邏輯:只有當(dāng)邏輯倆側(cè)一個(gè)成立一個(gè)不成立時(shí)整個(gè)邏輯才成立肠虽,否則邏輯不成立。
4、賦值運(yùn)算符: =
5妇汗、符合運(yùn)算符:+= -= *= %= ++ --
6互婿、拼接運(yùn)算符:. 拼接字符串
echo 5/2; // 雖然類型上將整數(shù)與小數(shù)分開,但是PHP仍然有弱類型特征,5/2依然計(jì)算為2.5猜绣;
四掰邢、分支結(jié)構(gòu)
五、循環(huán)結(jié)構(gòu): for、while
六酗昼、常量:值不會(huì)發(fā)生變化的變量叠荠。
1.define(name,value);
define('PI',3.14);//聲明了一個(gè)常量PI际起,值為3.14;不允許二次賦值;
echo PI;
2.const 關(guān)鍵字聲明常量
const PI = 3.14;
echo PI;
7.String操作方法
'' 和 "" 都可以表示字符串校翔,"" 可以解析變量弟跑,通常將變量用{}包裹。
$i = 3;$j = 6;
echo $i."*".$j."=".$i*$j;
$res = $i*$j;
echo "{$i}*{$j}={$res}";
echo "$i and $j 都是odd"
$str = "PHP is the best in the world";
1防症、strlen($str):讀取字符串長度孟辑。(中文占據(jù)三個(gè)字符長度)
echo strlen("你好")
2、substr($str,start,len):截取字符串
echo substr($str,4,11);
3蔫敲、 strpos($str饲嗽,sub):判斷指定字符串是否包含目標(biāo)子字符,如果包含返回索引,否則返回false;
echo strpos($str,'best');
4奈嘿、4. stripos($str貌虾,sub);//不區(qū)分大小寫
echo stripos($str,'php');
5郭计、str_replace(who,what,where,count):字符串替換筒主,count是可選參數(shù),記錄替換次數(shù)黑忱;
$res = str_replace('e','',$str,$n);
echo "$res <br> $n";
6叶圃、explode(item,$str): 以item為參照物切割指定字符串為數(shù)值(item不可以是空字符串)
print_r(explode(' ',str));
echo "<br>";
var_dump(explode(' ',$str));
7袄膏、strtoupper(str): 翻轉(zhuǎn)字符串
9沉馆、strstr(a,b):字符串的截取,a字符串 b指定字符 從指定字符開始截取到末尾
echo strstr($str,'i');
8.數(shù)組:儲(chǔ)存多個(gè)數(shù)據(jù)的容器
1、聲明數(shù)組
$arr = ["青","案","是","請"];
$arr = array(
"青",
8=>"案",
"是",
"請"
);
print_r($arr);
2斥黑、數(shù)組類型:
(1)索引數(shù)組:索引從零開始遞增的整數(shù)
(2)關(guān)聯(lián)數(shù)組:索引為string
(3)混合數(shù)組:索引與關(guān)聯(lián)的組合
$arr = [
"芋泥波波奶茶",
"絲襪奶茶",
"紅豆奶茶",
"拿鐵咖啡",
"卡布奇諾",
"摩卡咖啡",
"大紅袍",
"金俊眉"
];
3揖盘、操作方法
1、count($arr):讀取數(shù)組長度
echo count($arr);
2心赶、array_push($arr,value...)
array_push($arr,"西湖龍井");
3扣讼、array_pop()
array_pop($arr);
4、array_unshift($arr,value...)
array_unshift($arr,"冰紅茶");
5缨叫、array_shift()
array_shift($arr);
6椭符、array_splice($arr,index,len,value...)
array_splice($arr,2,1);
7、array_slice($arr,start,len):截瘸芾选销钝;
8、in_array(item,$str)
判斷item是否在arr中,如果在返回true,否則返回false;
echo in_array("芋泥波波奶茶",$arr);
9琐簇、implode(char,$arr):數(shù)組轉(zhuǎn)字符串
echo implode(",",$arr);
10蒸健、array_merge($arr,arr...): 數(shù)組拼接
$res = array_merge($arr,[1,2,3,3,4]);
print_r($res)
11婉商、 array_reverse($arr):反轉(zhuǎn)數(shù)組元素
$res = array_reverse($arr);
print_r($res);
12似忧、sort(); 升序排序 : 數(shù)字按大小排序 , 字母是首字母按a-z排序
13、rsort();降序排序 : 數(shù)字按小到大排序,字母是首字母按z-a排序
14丈秩、ksort();鍵名對數(shù)組排序盯捌,為數(shù)組值保留原來的鍵 : ksort(array,sorttype)
15、krsort();按照鍵名進(jìn)行降序排序:
16蘑秽、asort();按照鍵值對關(guān)聯(lián)數(shù)組進(jìn)行升序排序:
17饺著、arsort();對關(guān)聯(lián)數(shù)組按照鍵值進(jìn)行降序排序:
9、ajax
ajax : 異步的javascript 和 xml
不是新語言肠牲,只是前端和后端交換數(shù)據(jù)的技術(shù)
特點(diǎn): 異步請求幼衰,局部更新。
異步和同步
同步:按順序依次執(zhí)行缀雳,在上一次執(zhí)行完成前渡嚣,后面的任務(wù)都是暫時(shí)掛起的狀態(tài)。
異步:不按順序執(zhí)行俏险,不會(huì)對后面的任務(wù)執(zhí)行造成阻塞严拒。
例子:同步(打電話) 、異步(發(fā)短信)
GET:通常用于向服務(wù)器請求數(shù)據(jù)
POST:通常用于服務(wù)器提交數(shù)據(jù)
核心:XMLHttpRequest 請求對象
GET請求的流程
//1. 創(chuàng)建請求對象
var xhr = new XMLHttpRequest;
// console.log(xhr);
// 2. 準(zhǔn)備請求
// open(method,url,async);
//method: string類型竖独,設(shè)置請求方式
//url :string類型裤唠,設(shè)置請求地址
//async:boolean類型,設(shè)置是否異步發(fā)送請求莹痢,true異步种蘸,false同步墓赴。
//如果GET請求需要向服務(wù)器發(fā)送數(shù)據(jù),必須將數(shù)據(jù)以查詢參數(shù)的格式拼接在url后面航瞭。
xhr.open('get','./response.php?type=3',true);
// 3. 發(fā)送請求
//send(): get請求下诫硕,send()方法無參數(shù)
xhr.send();
// 4. 監(jiān)聽請求
// onreadystatechange 事件監(jiān)聽請求
xhr.onreadystatechange = function(){
//每當(dāng)請求狀態(tài)改變時(shí)觸發(fā)
//(1)readyState; 請求狀態(tài)
//0 :請求對象已初始化,尚未準(zhǔn)備請求刊侯。
//1 :請求已準(zhǔn)備章办,但尚未發(fā)送請求。
//2 :請求已發(fā)送滨彻,但服務(wù)器尚未接收藕届。
//3 :服務(wù)器以接收請求,尚未處理
//4 :服務(wù)器已處理請求亭饵,并返回結(jié)果
//(2)status:服務(wù)器響應(yīng)碼(HTTP狀態(tài)碼)休偶;
// 200 :請求成功,可以正常接收服務(wù)器相應(yīng)辜羊。
// 304 :請求成功
// 404 :請求失敗踏兜,頁面不存在
// 403 :請求失敗,服務(wù)器接收到了請求但是拒絕處理八秃。
// 500 :請求失敗碱妆,服務(wù)器異常
if(xhr.readyState == 4 && xhr.status == 200){
// 5. 接收服務(wù)器返回結(jié)果
// responseText
console.log(xhr.responseText);
var res = JSON.parse(xhr.responseText);
console.log(res);
}
}
//POST請求流程
//如果POST請求不攜帶數(shù)據(jù),那么請求流程于GET完全相同昔驱,唯一區(qū)別就是open()方法的第一參數(shù)不同山橄。
1.創(chuàng)建請求對象
var xhr = new XMLHttpRequest;
//2.準(zhǔn)備請求
xhr.open('post','./response.php',true);
//3. 建立請求頭(數(shù)據(jù)需要包裝請求頭中)
//設(shè)置數(shù)據(jù)格式
//表單數(shù)據(jù):application/x-www-form-urleneoded;
xhr.setRequestHeader('Context-type','application/x-www-form-urlencoded');
//發(fā)送請求并攜帶數(shù)據(jù)
//發(fā)送表單數(shù)據(jù)時(shí),數(shù)據(jù)需要以查詢參數(shù)形式的字符串作為 send() 方法的參數(shù)舍悯。
xhr.send('type=3');
//監(jiān)聽請求
xhr.onreadystatechange = function(){
if(xhr.readyState==4 && xhr.status==200){
console.log(xhr.responseText);
// var res = JSON.parse(xhr.responseText);
// console.log(res);
}
}