PHP学习记录
文章目錄
- 1、PHP概述:
- 2、web工作原理:
- 3、php腳本語言:
- 3、變量
1、PHP概述:
- php的目標是允許網絡開發人員快速編寫動態頁面
- 主要被用于開發各種網站程序
- 是腳本語言,不需要事先編譯,在服務器運行。
2、web工作原理:
web服務器: 瀏覽器 → 輸入url地址 → 顯示網站內容
服務器是一種軟件,把安裝運行了服務器的電腦叫主機(host)
3、php腳本語言:
開始: <?php
結束: ?>
<?php ?>表示進入php模式。
-
PHP代碼可以嵌入到 html 代碼中任何位置,并且可以嵌入任意多個。
-
文件末尾的?>結束標志可以省略
-
一些PHP語句的結尾要加上;表示一句話的結束
-
結束標記?>就隱含了一個;
1)多行注釋
/*多行注釋*/2)單行注釋:
//我是單行注釋3、變量
變量是用于臨時(只有在我們的程序的運行過程中才存在)存儲值(數據)的容器
變量用于存儲 數字、文本字符串 或者數組這些數據!
1.變量的銷毀:
unset($變量名稱)$and1=1;unset($and1);//銷毀$and變量echo $and1;//提示出錯,因為變量已經被銷毀了!2.變量的命名規則:
1)變量名稱嚴格區分大寫
$name,$NAME,$Name都是不同的變量2)
字母或者下劃線開頭
后面接任意數量的字母數字下劃線都可以!
錯誤的命名方式:
$1name 錯誤點:以數字開頭了
$n ame 錯誤點:中間有空白字符
總結一下:變量名只能包含 字母 數字 下劃線 并且必須以字母或者下劃線開頭!
3)最好不要用一些關鍵字作為變量名稱(因為在其他的編程語言里面是完全不被允許的)!
4.變量類型
1.變量類型簡介
1)bool (布爾型)
$a=true;
var_dump($a);
往變量里面存true或者false,那么這個變量就是布爾型了
2)int (整型)
往變量里面存整數,那么這個變量就是整型變量啦!
3)float (浮點型,也稱double)
往變量里面存小數,那么這個變量就是浮點型數據了!
$a=1.1;
var_dump($a);
4)string (字符串)
字符串就是一系列的字符組成串在一起!
1單引號:
在定義一些簡單的字符串的時候使用單引號這種方法效率比較高!
2雙引號
3定界符
$b=200;$a=<<<wwwdwqdqwdwq{$b}dwqdqdqdqdwqdwqcwcfwefwefcscwecwefwdqwdqdefwefwefewfwewww;var_dump($a);3定界符
$b=200;
KaTeX parse error: Expected '}', got 'EOF' at end of input: …<www dwqdqwdwq{b}dwqdqdqdqdwqdwqcwcfwefwefcscwecwefwdqwdqdefwefwefewfwe
www;
var_dump($a);
4)NULL
null表示一個變量沒有值,表示空將變量直接賦值為null聲明的變量尚未被賦值被unset函數銷毀的變量$a=1111;unset($a);var_dump($a);5.常量
1.概念
常量是用于臨時(只有在我們的程序的運行過程中才存在)存儲值(數據)的容器
2.定義和使用
define(‘常量名稱’,常量值) 或者 define(“常量名稱”,常量值)
常量的命名:
1)和變量一樣 只能包含字母數字下劃線 并且必須以 字母或者下劃線開頭
2)按照慣例常量名字總是大寫的
3)自定義的常量是嚴格區分大小寫的!
defined()函數來檢查是否定義了某個常量
3.常量和變量的區別
1)常量前面沒有美元符號($)
2)常量只能用define()函數定義,不能通過賦值語句
3)********常量可以不用理會變量范圍的規則而在任何地方定義和使用
4)常量一旦被定義就不能被重新定義或者取消定義
5)常量的值只能是bool,int,float,string類型
4.預定義常量
預定義常量說白了就是我們的PHP內核已經幫我們定義好了的常量!
其中有的預定義常量是一__開頭的,這些預定義常量我們又叫它魔術常量
代碼所在的位置不同他的值也是不同的,所以它加 魔術常量
八個常用的魔術常量
http://php.net/manual/zh/language.constants.predefined.php
預定義常量是不區分大小寫的!
6.運算符
概述:
說白了就是一些符號,這些符號可以將變量或者數據執行某中運算!
1.算術運算符
1)+
2)-
第一個意思: 減號
第二個意思: 取反
$a=1; $b=-$a; echo $b;//-1 echo '<br />'; echo $a;//1注意:取反并不會影響到被取反變量本身的值!
3)* 乘號
4)/ 除號
$a=10;$b=2;$c=$a/$b;echo $c;5)% 取模
$a=12;$b=2;echo $a%$b;6)++ 自增
前++
當在一個語句里面需要使用到被自增的變量的值的時候,前++會先執行自增,然后再返回自增之后的值!
后++
當在一個語句里面需要使用到被自增的變量的值的時候,后++會先返回變量的值然后再去執行自增
注意:
$a=10;++$a;//這種情況不需要用到自增變量值的時候,和后++無區別echo $a;7)-- 自減
前–
后–
$a=10;//$a--;//$a=$a-1; 和--$a沒區別;echo $a--;//echo $a;$a=$a-1;echo '<br />';echo $a;注意:自增或者自減是對變量而言的!
2.字符串運算符
. 連接運算符
3.賦值運算符
=
把右邊的值賦給左邊的變量
$a=1;
二元運算符
表達式是 PHP 最重要的基石。在 PHP 中,幾乎所寫的任何東西都是一個表達式。簡單但卻最精確的定義一個表達式的方式就是“任何有值的東西”。
+=$a=1;$b=2;$a+=$b;//$a=$a+$b;echo $a;-=$a=2;$b=1;$a-=$b;//$a=$a-$becho $a;4.比較運算符
概念:
對操作數(按照比較運算符的要求,規則)進行比較
如果比較出的結果滿足比較運算符的要求那么結果就是true(真,成立,滿足),否則就是false(假,不成立,不滿足)
PHP中規定:
使用echo輸出布爾類型值的時候
echo true;它在頁面中會輸出1
echo false;它會在頁面中什么都不輸出
規定的,記住就好!所以說我們在測試的過程中如果需要輸出布爾類型值的時候我們最好使用var_dump()來輸出更明了的結果!
1)== 值是否相等
如果值相等則就是 true(真,成立)
如果值不相等那么就是false(假,不成立)
2)=== 全等(值要相等,類型也要相等)
如果兩邊操作數的值 全等那么就是true否則就是false
3)!= 值是否不相等
如果兩邊操作數的值不相等那么就是true,否則就是false
4)<> 同上
5)!== 不全等
如果兩邊的操作數不全等那么就是true,否則就是false
/*
6)< 小于
比較兩邊操作數的值,前面的是否小與后面的
這句話正確還是錯誤
7)> 大于$a=10;$b=1;var_dump($a>$b);8)<= 小于等于
$a=1;$b=1;var_dump($a<=$b);//$a小與等于$b就是true,否則就是false9)>= 大于等于
$a=2;$b=1;var_dump($a>=$b);//true5.邏輯運算符
概念:
對表達式進行邏輯運算,運算出的結果是布爾類型的值(true,false)
要求:
參與邏輯運算的表達式的值是布爾類型的值,如果不是布爾類型的值會被PHP自動轉換成布爾類型的值,然后再參與運算!
1)邏輯與
and 或者 &&
運算規則:
左右兩邊的表達式的值都為true的時候,運算的結果就是true
否則只要其中任意一個為false,運算的結果就是false;
現實舉例:
true 及格
false 不及格
左右兩邊的表達式就是我們要考試的科目;
要求:當語文和數學都及格的時候那么,最終的結果才能夠通過(true),否則就是不通過(false)
中間隱含一個問題:“短路”,運算符的優先級的問題!
2)邏輯或
or 或者 ||
運算規則:
左右兩邊的表達式的值有一個為true,運算的結果就是true
,只有當兩邊的值都是false的時候,結果才會是false
現實舉例:
要求:當語文和數學有一門及格那么最終的結果就是通過true
中間隱含一個問題:“短路”,運算符的優先級的問題!
3)邏輯異或
xor
運算規則:
左右兩邊的表達式的值不一樣的時候結果就是true,如果一樣那么運算的結果就是false
4)邏輯非
!
運算規則:
將原來表達式的值否定掉,原來是true,那么結果就是false
原來是false,那么結果就是true
- 5)運算符
1)? :
三元運算
格式:
表達式1 ? 表達式2 : 表達式3;
如果表達式1的值為true,那么就執行表達式2,否則那么就執行表達式3
$a=false ? 10 : 20;
echo $a;//20
涉及到跨平臺:
3)@
屏蔽表達式可能發生錯誤!
echo @$a;
當然,實際在哪些地方應用,我們用到大家就知道了!
4)=>
5)->
6)instanceof
8.運算符的優先級
優先級的概念:
誰的優先級別高就先算誰!
結合方向:
規定了從那個方向開始算的問題!
優先級這個概念只要知道一些基本的常用的就可以了,因為我們在實際開發中幾乎沒有那么需要寫非常復雜的表達式,
讓我們去考慮先算誰,后算誰的問題!
優先級歸納:
1)[無]遞增遞減
2)[右]邏輯非!
3)[左]乘,除,取余
4)[左]加,減,字符串連接符
5)[無]包含大于號或者小于號的比較運算符
6)[無]不包含大于號或者小于號的比較運算符
7)[左]邏輯與&&
8)[左]邏輯或||
9)[左]? :
10)[右]賦值運算符
12)[左 ]邏輯異或xor
圓括號的作用:
用圓括號可以將表達式里面的某一塊看成一個整體!
*使用括號可以增強代碼的可讀性。
6.流程控制
if語句
switch語句
循環語句
與C語言基本相同就不再詳寫。
特殊的流程控制語句
1.break語句
作用:用于switch語句,for,while,do…while,foreach,用于中斷這些語句!
后面可以接上一個數字來表示跳出幾層循環!默認不加就是跳出當前循環語句!
2.continue語句
作用:只能用在循環語句,跳出本次循環,并不是結束整個循環語句!
3.exit()語句
作用:結束當前整個程序的執行!
die()語句作用同上!
7.自定義函數
function 函數名([形式參數1,形式參數2,…形式參數n]){
//各種PHP代碼…
//…
return 表達式;//也可以不返回,如果不寫那么默認返回null
}
的返回值:
返回給調用者,默認返回null
當執行完return 命令后,即結束函數。
二、PHP變量的范圍
1.局部變量
.全局變量
$i=10;//全局變量(外部變量)define('MY_NAME','石明康');function test(){echo MY_NAME;global $i;//聲明$i為全局變量,然后再這個函數內部就可以使用$iecho $i;$a=1;}test();靜態變量:
三、參數的傳遞
1.按值傳遞參數
默認的,我們在傳遞參數的時候默認使用的就是這個方式!
對形式參數的操作,根本不是影響到實際參數(變量)的值,兩者相當于沒有聯系!
2.按引用傳遞參數
按引用傳遞參數,相當于形式參數和實際參數指的是同一個人,只是名字不一樣,對于形式參數的操作會直接影響到實際參數(變量);
3.函數的默認參數
可以給形式參數設置默認值,設置方法很簡單直接賦值即可!
給形式參數加默認值的時候是重右往左加的,右邊的必須有,才能夠給左邊的加!
四、可變函數(變量函數)
直接把函數賦值給變量
可變函數不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及類似的語言結構。需要使用自己的包裝函數來將這些結構用作可變函數。
五、遞歸函數
遞歸函數即在函數內部自己調用自己的函數。
遞歸函數:
1)函數在被調用的執行過程中會在內存里面分配空間用于存儲臨時數據,那么函數在執行過程中默認之間時沒有聯系的(除了
靜態變量,按引用傳,全局變量)。里面的變量默認都是局部變量,相互之間沒有影響!
2)遞歸函數,在函數的內部需要有適時結束函數運行的條件!
六、內部(內置)函數
PHP提供給我我們許多現成的函數或者結構,我們可以在實際的開發中直接使用!
還有一些函數需要開啟特定地 PHP 擴展模塊,否則在使用它們的時候就會得到一個致命的“未定義函數”錯誤。
一些常用的內置函數或者擴展的函數,我們在后面會陸陸續續的學習到,一些不太常用的可能我們沒有辦法全部講到,但是
你使用函數是用來完成功能的,說白了,你有這樣的需求,才會去找對應的函數!
七,數組
一、數組類型
二、數組創建
方法 一、
變量名稱[索引值]=數據;
變量名稱[]=數據;//不寫索引值默認是 索引數組,從0開始
方法 二、
變量名稱=array(
索引值=>數據,
…
);
數據里面還可放數組類型的數據,同一個數組中存儲任何類型的數據
多維數組:
訪問數值的方法
變量名稱[索引值][索引值]…
三、數組的遍歷
遍歷數組:每個都經歷一遍的意思
1)for循環
用的比較少,因為有缺陷
2)foreach語句來實現遍歷數組的目的foreach語句來實現遍歷數組的目的
foreach(數組變量 as 變量1){
//每次循環執行的語句
變量1代表當前正在經歷(訪問)的數據
}
foreach(數組變量 as 變量1=>變量2){
//每次循環執行的語句
變量1代表當前正在經歷(訪問)的數據的索引值
變量2代表當前正在經歷(訪問)的數據
}
三、預定義超全局數組變量
已經定義好了(存在)的變量(存放的數據的類型是數組)。
超全局:超級全局變量,作用域(有效區域)!
傳遞數據(提交數據)給服務器端主要兩種方式
1.get方式
比如:
?參數名=參數值&參數名=參數值…
http://localhost/demo5_3/index.php?參數名=參數值
在服務器端(請求的php文件這邊)可以通過$_GET來獲取到
$_GET索引值為參數名,索引值對應的數據就是參數值
2.post方式
比如表單 post發送過來的!
可以通過$_POST來獲取到!
四.字符串處理
一、去除空格或其他字符函數
二、大小寫轉換函數
$str='test';var_dump($str);$str1=strtoupper($str);var_dump($str);$str='TeSt';var_dump($str);var_dump(strtolower($str));var_dump($str);三、字符串查找函數
1.substr_count$str='testteste';var_dump(substr_count($str,'te'));$text2 = 'gcdgcdgcd';echo substr_count($text2, 'gcdgcd');$str='testteste';var_dump(substr_count($str,'te',1,8));//不能超出字符串2.strpos$str='testteste';var_dump(strpos($str, 't1'));if(strpos($str, 't')===false){echo '沒找到!';}else{echo '找到啦!';}$str='testteste';var_dump(strpos($str, 't',1));3.strstr$str='testteste';var_dump($str);var_dump(strstr($str,'s'));var_dump(strstr($str,'s',true));四、字符串替換函數
1.str_replace$str=array('abc123abc','123abcabc','abcab123c');var_dump($str);$str1=str_replace(array('1','2','3'),array('一','二','三'),$str,$count);echo $count;var_dump($str1);五、與html標簽相關的函數
1.htmlspecialchars$str=<<<START<p style="color:red;font-size:128px;">單位確定為取得完全</p>" 'START;echo $str;echo "\n";echo htmlspecialchars($str);2.strip_tags$str=<<<START<p style="color:red;font-size:128px;">單位確定為取得完全</p><div style="color:red;">的武器大全我</div>START;//echo $str;//echo "\n";echo strip_tags($str,"<div><p>");六、字符串截取函數
1.substr$str='testdqwdwqdwqdqdwq';echo substr($str,3,2);$str='test';echo substr($str,-3,2);七、字符串分隔函數
1.explode$str='test,test1,test2,test3';var_dump(explode(',',$str,2));2.str_split$str='test';var_dump(str_split($str,3));一.會話控制—cookie
一、Cookie
例:setcookie('username',' $name',time()+3600);
2.在服務器端讀取cookie內容
$_COOKIE if(!isset($_COOKIE['username']))3.將多維數組應用到Cookie中
setcookie("member[name]",'薛之謙');setcookie("member[password]",‘xiaobaixue');4.刪除Cookie
setcookie("member", ' ',time() -1); setcookie('username',$name,time()-1);二、Session
1.開啟session
總結
- 上一篇: CSS练习记录
- 下一篇: PHP — Cookie and Ses