摘要:后端知識點總結服務器服務器的作用接收客戶端的請求,查找需要的數據文件數據庫其它系統,發送回客戶端。注意默認情況下,若判定了某個相等條件則執行該條件以及后續所有條件中的執行語句必須配合關鍵字使用。
后端知識點總結——PHP 1.Web服務器
Web服務器的作用:接收客戶端(PC/PAD/PHONE)的請求,查找需要的數據(文件/數據庫/其它系統),發送回客戶端。
Web服務器分為兩種:
(1)靜態Web服務器:提供的內容任何人任何時間都是不變的
靜態Web內容:HTML/CSS/JS/Flash/GIF/音視頻... 常見的靜態Web服務器:Apache Httpd、MS IIS、NginX
(2)動態Web服務器:提供的內容不同人不同時間都可能變化
動態Web內容: JSP = HTML + Java(靜態Web服務器+Java解釋器) PHP = HTML + PHP(靜態Web服務器+PHP解釋器) ASP.NET = HTML + C#(靜態Web服務器+C#解釋器) Node.js = HTML + Node2.PHP背景知識
PHP:Personal Home Page => PHP is Hypertext Preprocessor(Zend)
LAMP組合 = Linux + ApacheHttpd + MySQL + PHP
(1)服務器端:下載并安裝一款靜態Web服務器
c:/xampp/apache/bin/httpd.exe
(2)服務器端:下載并安裝PHP解釋器,與Web服務器整合
C:/xampp/php/php.exe
(3)服務器端:編寫靜態/動態網頁,保存在Web服務器上
C:/xampp/htdocs
(4)服務器端:啟動Web服務器,打開需要的端口
ApacheHttpd服務器默認占用80/443端口
-------------------------------------------
(5)客戶端:在瀏覽器中輸入協議、地址、端口訪問Web服務器
http://127.0.0.1:804.PHP中的變量和常量
a = 1; b = 2; c = a + b;
變量:值可能發生改變的量,如人的年齡、用戶的密碼、商品的價格。
PHP中聲明一個變量: $變量名 = 值; #等號讀作“賦值” 輸出一個變量的值: echo $變量名; #輸出變量值時不加單引號
常量:值不可能發生改變的量,如PI、E。
聲明一個常量: const 常量名 = 值; 輸出一個常量值: echo 常量名;
變量名中可以包含數字、字母、下劃線,但不能以數字開頭
合法的:$age、$age2、$_age_2、$emp_age、$empAge
非法的:$2age、$user-Name、$user Name
常量名中可以包含數字、字母、下劃線,但不能以數字開頭;習慣上常量名全部使用大寫字符
合法的:AGE、AGE2、EMP_AGE
PHP中的數據類型
PHP/JS屬于“弱類型語言”—— 創建變量時無需指定類型,一個變量可以先后賦值為不同類型的值
$i = 10; $i = "Hello"; $i = true;
echo $變量名; 只能用于輸出變量的值;
var_dump($變量名); 可用于輸出變量的類型和值。
PHP中的數據類型——具體可以查看參考手冊《語言參考》:
1)4個標量/值/基礎類型
(1)int/integer:整數 -2147483648~2147483647 (2)float/double:小數 float和double完全一樣 (3)string:字符串 (4)bool/boolean:布爾,只能取值為true / false / TRUE / FALSE
2)2個復合類型
(5)array:數組 (6)object:對象
3)2個其它類型
(7)null:空 (8)resource:資源
注意:
(1)整數值超過了int的最大范圍(2147483647),自動變為flaot類型
(2)bool的true若用echo輸出為"1",false用echo輸出為空字符串
(3)string可用單引號/雙引號括起來;細微的區別:若單引號字符串中有變量名,則直接輸出為變量名;而雙引號中的有變量名,則輸出為變量的值 —— 雙引號中不具備運算能力:"$a+$b"
(4)兩個字符串拼接使用 . 號
PHP中的運算符分為如下的幾大類:
(1)算術運算符: + - * / % ++ --
(2)比較運算符: > < ...
(3)邏輯運算符: && || !
(4)位運算符: << >>
(5)賦值運算符: = ....
(6)拼接運算符: .
(7)三目運算符: ?:
3.算術運算符
/ % ++(自加1) --(自減1)
說明:
(1)+只用作算術運算,不用做字符串拼接!
(2)+作用于字符串,會發生隱式轉換:試著解析出字符串中的數字,能解析幾位就解析幾位。
(3)+作用于布爾,會發生隱式轉換:true轉換為1,false轉化為0。
(4)%表示求余運算/取模運算,2018%4結果為2,一般用于判定一個數是否能被另一個數整除
(5)計算一個數字在原有基礎上+1,有三種方法:
$n1 = $n1 + 1; $n1 ++; #運算速度更快! ++ $n1;
4.比較運算符
= < <= == != ===(全等于) !==(不全等)
說明: $result = $score1 > $score2;
(1)比較運算的結果為 true 或 false 。
(2)默認情況下,用==比較的話,1和true是相等的;0和false和""是相等的 —— ==運算符會進行自動的“隱式轉換”。
(3)若比較運算中不希望出現自動的隱式轉換,只要類型不同直接判定為不等使用 ===
5.邏輯運算符
&&(并且/與) ||(或) !(取反/非)
$c = 50; $m = 80;
判定語文和數學是否都及格了: $c>=60 && $m>=60
對于&&運算:
true && true => true
false && true => false
true && false => false
false && false => false
判定語文和數學有一科及格嗎: $c>=60 || $m>=60
對于||運算:
true || true => true
false || true => true
true || false => true
false || false => false
判定語文是否為不及格: !($c>=60)
對于!運算:
! true => false
! false => true
與運算中的“短路”效果:
false && ? => false ?將不會被執行
或運算中的“短路”效果:
true || ? => true ?將不會被執行
數字按照二進制(bit位)形式進行運算。
<<(按位左移) >>(按位右移)
面試題:現在有變量 $num = 5,計算出$num*16的最快方式是:
(a) $num = $num * 16;
(b) $num *= 16;
(c) $num *= 4;
(d) $num << 4;
(e) $num << 16;
結論:一個數字向左按位移動N位,相當于 原數*2^N;
一個數字向右按位移動N位,相當于 原數/2^N;
= += -= *= /= %=
$n = 30;
$n = $n + 5;
$n += 5; //效果等價于上一行
$n = $n - 5;
$n -= 5; //效果等價于上一行
. .=
$uname = "tom";
$uname = $uname . "先生";
$uname .= "先生"; //效果等價于上一行
單目運算符: $a++
雙目運算符: $a + $b
三目運算符: $a ? $b : $c
?:
語法: 表達式1 ? 表達式2 : 表達式3
含義:(如果...否則...)如果表達式1的值為true,則返回表達式2的值,否則返回表達式3的值
示例: $sex = 1;
$result = $sex===0 ? "女" : "男" ; echo $result;12.程序 = 數據 + 算法
1.算法的基本結構
(1)順序執行
(2)選擇執行
(3)循環執行
2.程序邏輯結構 —— 順序執行
3.程序邏輯結構—— 選擇/分支執行之一
收銀臺程序 V2.0: 若購物總金額滿500,則打八折
選擇執行的最基礎代碼:
if( 條件判定 ){ //條件判定結果為true時執行的代碼 }
語句1;
if( 條件判定 ){
語句2;
}
語句3;
如果條件判定為true,執行順序: 1=>2=>3
如果條件判定為false,執行順序: 1=>3
收銀臺程序 V3.0: 若已付金額足夠商品總價格,計算找零并輸出;否則輸出錯誤提示
"如果...否則..."邏輯的語法結構:
if( 條件判定 ){ //條件判定為true時執行的語句 }else { //條件判定為false時執行的語句 }
語句1;
if( 條件判定 ){
語句2;
}else {
語句3;
}
語句4;
條件判定為true,執行順序: 1=>2=>4
條件判定為false,執行順序: 1=>3=>4
關于"if...else....的嵌套問題"有兩種編寫方法:
(1) if( ){
}else { if(){ }else { } }
(2) if( ){
}else if( ){ }else if( ){ }else { }
if1 + else ifN + else*1
小結:
(1) if( ){ }
(2) if( ){ }else{ }
(3) if( ){ }else{ if(){}else{} }
(4) if( ){ }else if( ){ }... else{ }
4.程序邏輯結構—— 選擇/分支執行之二
switch...case...break選擇分支結構:在多個不同“情形下”進行“切換”。
語法: switch( 變量名 ){
case 值1: #if(變量名==值1) 語句1; case 值2: #if(變量名==值2) 語句2; .... default: #else.... 語句n; }
含義:若指定變量等于值1,則執行語句1;否則若等于值2,則執行語句2.... 否則執行語句n。
注意:默認情況下,switch若判定了某個相等條件則執行該條件以及后續所有條件中的執行語句 —— 必須配合break關鍵字使用。
5.程序邏輯結構 —— 循環結構之一
循環:多次執行相同或相似的代碼
循環二要素: (1)循環體 (2)循環條件
第一種循環結構:
while( 循環條件判定 ){ //循環體 }
含義:執行條件判定,若為true,則執行一次循環體;再次執行條件判定.....直到某次執行完循環體,再去執行條件判定為false,則退出循環,繼續執行后面的語句
13.循環結構之二 —— do...while...語法:
do{ 循環主體; }while( 循環條件 );
while...先判定后執行 do..while..先執行再判定
$i=0;
while($i<5){
echo "Hello"; $i++;
} $i=0;
do{
echo "Hello"; $i++;
} while($i<5);
$i=10;
while($i<5){
echo "Hello"; $i++;
} $i=10;
do{
echo "Hello"; $i++;
} while($i<5);
while循環主體可能執行0~N次 do..while循環主體可能執行1~N次
語法:
for( 表達式1 ; 表達式2 ; 表達式3 ){ 循環主體; }
含義:首先執行且僅執行一次“表達式1”;
再執行“表達式2”的判定,若為true,執行一次循環主體; 再執行一次“表達式3”,再去執行“表達式2”的判定, 若為true繼續執行一次循環主體..... 直到為false,退出循環。
總結:
“表達式1”在循環開始前執行一次——一般用于聲明循環變量;
“表達式2”在每次主體執行前都執行一次——一般用于執行循環判定條件;
“表達式3”在每次主體執行后都執行一次——一般用于執行循環變量的增減。
$i = 0;
while( $i<5 ){
echo "Hello";
$i++;
} for( $i=0; $i<5; $i++){
echo "Hello";
}
while和for的功能一樣!只是for更加緊湊!
for循環中的三個表達式都可以為空。
循環中使用break關鍵字: 打斷當前循環,不再執行,跳出循環
for($i=1; $i<10; $i++){
if($i==5){
break;
}
echo "$i";
}
//1/2/3/4
while(true){ ...break;... } for( ; ; ){ ...break;... }
循環中使用continue關鍵字:跳過此次循環,繼續下一次循環
for($i=1; $i<10; $i++){
if($i==5){
continue;
}
echo "$i";
}
//1/2/3/4/6/7/8/9
表示一個學生的成績: $score = 90; #一個標量即可
表示100個學生的成績:
$score1 = 85; $score2 = 98; $score3 = 77; ....
結論:一個標量類型的變量只能存儲一個數據;若想一個變量中存儲N個值,可以使用復合類型“數組(Array)”
創建一個數組的語法:
$變量名 = [ 值1, 值2, .... 值n ]; $變量名 = [ ];
獲取數組中元素的個數/數組的長度:
echo count($變量名);
操作數組中的某個元素——使用元素的下標/索引(index):
$變量名[下標] = 值; #修改指定下標處的元素值 echo $變量名[下標]; #輸出指定下標處的元素值
向數組中添加新元素:
$變量名[ ] = 值; #新的元素會自動獲取新的下標
思考:創建一個數組,保存一個學子商城中用戶的信息,編號、用戶名、密碼、注冊時間、當前是否在線。
$user = [134773434, "tom", "1232132", 123434434, 1];
0 1 2 3 4
數據的說明性太差了!
16.PHP中數組分為兩種類型:(1)索引數組(Indexed Array):每個元素的下標是數字
$arr = ["tom", "mary", "king"]; $arr = [24, 35, 55, 28, 29]; 索引數組適用于“類型相同的多個數據”
(2)關聯數組(Association Array):每個元素的下標是字符串
$user = ["uid" =>1234, "uname"=>"tom", "regTime"=>1232341343, "upwd"=>"123234"];
注意:關聯數組每個元素的下標都是自定義的字符串!不能使用for循環進行遍歷!
17.循環結構之四 —— foreach循環語法: foreach只用于遍歷數組(尤其是關聯數組)
foreach( $數組名 as $元素變量名 ){ //循環主體 } foreach( $數組名 as $下標變量名=>$元素變量名 ){ //循環主體 }
含義:對于數組中的每個元素,都看做是一個指定的變量,對每個這樣的變量執行一次指定的循環體
示例: $ageList = [20, 23, 21, 25];
foreach( $ageList as $v){ echo "$v18.PHP中的預定義數組 —— 難點!
"; } ================== $user = ["uid"=>101, "uname"=>"tom"]; foreach( $user as $v){ echo "$v
"; }
預定義:由PHP解釋器自己創建的,程序員不需要聲明可以直接使用的。PHP預定義了如下的數組變量:
$_GET
$_POST
$_COOKIE
$_FILES
$_REQUEST:保存著客戶端提交給服務器的“請求”數據
$_SESSION
上述變量默認都是 array(0){ }
Web項目中,客戶端(瀏覽器)如何給服務器傳數據:
http://127.0.0.1/login.php?uname=tom&upwd=123
PHP服務器會自動把?后面的數據存儲到$_REQUEST數組中:
$_REQUEST["uname"] = "tom"; $_REQUEST["upwd"] = "123";
程序員如何讀取客戶端提交的數據:
echo $_REQUEST["uname"]; //tom echo $_REQUEST["upwd"]; //12319.函數基礎認識 —— 掌握
Function:功能體/函數,用于封裝一段需要反復執行/不易編寫的代碼 —— 餃子機。
聲明一個函數:
function 函數名( ){ //函數主體 }
執行/調用一個函數:
函數名( );
聲明一個帶參數的函數:
function 函數名(參數名1, 參數名2, ... ){ //函數主體 }
執行/調用一個函數:
函數名( 值1, 值2, ... );
聲明函數時指定的參數其實就是變量名——形式參數;調用函數時給出指定的具體的值——實際參數。
聲明一個帶返回值的函數:
function 函數名( [參數名1, 參數名2, ...] ){ //函數主體 return 函數運算的結果值; //應該是整個函數中最后一句 }
執行/調用一個有返回值函數:
$變量名 = 函數名( [值1, 值2, ...] );
使用一個變量接收函數的返回值。
20.PHP預定義函數 —— 訪問MySQL數據庫必需的函數 ——重點&難點提示:歷史上,PHP官方提供了兩套訪問MySQL服務器的函數:
mysql_xxxx( ) 性能不夠優秀 mysqli_xxxx( ) Improved:改進提升版
使用MySQLI函數庫訪問數據庫服務器的步驟(與管理員從命令行中訪問數據庫的步驟一樣):
(1)連接到數據庫服務器
$conn = mysqli_connect(...);
(2)提交SQL語句給服務器執行
$sql = "INSERT/DELETE/UPDATE/SELECT..."; $result = mysqli_query($conn, $sql);
(3)查看執行結果
if($result===false){ //執行失敗 }else{ //執行成功 }
(4)關閉到數據庫服務器的連接(可以省略)
mysqli_close( $conn );21.面試題:$i++和 ++$i 的異同。
$i++:先取值再自加
++$i:先自加再取值
$i = 10;
$j = $i++; #先取出$i的值(10),賦值給$j;然后$i自加1
echo $i, $j; #11, 10
$i = 10;
$j = ++$i; #先對$i自加1,變為11;再取其值賦給$j(11)
echo $i, $j; #11, 11
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19214.html
摘要:后端知識點總結服務器服務器的作用接收客戶端的請求,查找需要的數據文件數據庫其它系統,發送回客戶端。注意默認情況下,若判定了某個相等條件則執行該條件以及后續所有條件中的執行語句必須配合關鍵字使用。 后端知識點總結——PHP 1.Web服務器 Web服務器的作用:接收客戶端(PC/PAD/PHONE)的請求,查找需要的數據(文件/數據庫/其它系統),發送回客戶端。 Web服務器分為兩種:...
摘要:行爬取頂點全網任意小說掘金之前連續多篇文章介紹客戶端爬取平臺,今天我們從零開始,實現爬取頂點小說網任意一本小說的功能。文件標記所有文件我的后端書架后端掘金我的后端書架月前本書架主要針對后端開發與架構。 30行js爬取頂點全網任意小說 - 掘金之前連續多篇文章介紹客戶端爬取平臺(dspider),今天我們從零開始,實現爬取頂點小說網任意一本小說的功能。 如果你還不知道客戶端爬取,可以先看...
摘要:行爬取頂點全網任意小說掘金之前連續多篇文章介紹客戶端爬取平臺,今天我們從零開始,實現爬取頂點小說網任意一本小說的功能。文件標記所有文件我的后端書架后端掘金我的后端書架月前本書架主要針對后端開發與架構。 30行js爬取頂點全網任意小說 - 掘金之前連續多篇文章介紹客戶端爬取平臺(dspider),今天我們從零開始,實現爬取頂點小說網任意一本小說的功能。 如果你還不知道客戶端爬取,可以先看...
摘要:使用簡記后端掘金全稱為即消息隊列。優測優社區干貨精選老司機亂談編輯器之神掘金前言是一種信仰,我自從年有了這個信仰,已經個年頭了。 PHP 程序員進階學習書籍參考指南 - 后端 - 掘金PHP程序員進階學習書籍參考指南 @heiyeluren lastmodify: 2016/2/18 ... 當我們在談論前端加密時,我們在談些什么 - 前端 - 掘金潘建旭,豈安科技(www.bigse...
閱讀 1967·2021-11-23 09:51
閱讀 879·2021-11-19 09:40
閱讀 832·2021-10-27 14:20
閱讀 5018·2021-10-09 09:52
閱讀 3302·2021-10-09 09:44
閱讀 1732·2021-10-08 10:05
閱讀 5084·2021-09-09 11:47
閱讀 3483·2019-08-30 12:47