PHP是什麼
- PHP全稱:Hypertext preprocessor 超文本預處理器,是一種開源的腳本語言
- PHP在服務器上運行,以純html的形式返回給瀏覽器
PHP能做什麼
- 可以生成動態的頁面
- 可以創建、打開、讀取、寫入、關閉服務器上的文件。
- 可以發送、接受cookie信息
- 可以向服務器發送表單數據
- 可以添加、修改、刪除數據庫中數據
- 可以限制用戶訪問網站,或者網站上的某些頁面
- 可以加密數據
PHP變量
PHP是一門弱類型的語言,因此會根據變量的值,自動變換爲正確的數據類型,在強類型的編程語言中,我們必須在使用變量前先聲明定義變量的類型和名稱。PHP沒有聲明變量的命令,故不需要聲明變量,變量以$符號開始,後邊跟着變量的名稱。
變量作用域
php有四種不同的變量作用域
- local (局部作用域–>局部變量)
- global (全局作用域–>全局變量)
- static (靜態作用域–>靜態量)
- parameter (參數作用域–>參數)
局部作用域 、全局作用域
函數外定義的變量,要想在函數內部使用,需要使用$ GLOBALS[‘變量名稱’] ,或者使用global關鍵字,在函數內部聲明該變量爲global $ x; 且在此處不能給$ x 賦值;
$x=5;
$y=10;
function myTest()
{
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 輸出 15
static 作用域
當一個函數完成時,它的所有變量通常都會被刪除。當你希望這個局部變量不要發生變化時,可以使用static,因此常用於計數器。
function myTest()
{
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
參數作用域
調用函數時傳遞給函數的變量值。
PHP數據類型
String (字符型)、Integar(整型)、float(浮點型)、Boolean(布爾型)、Array(數組),Object(對象)、NULL(空值)
注意點:
- PHP中對象必須聲明,利用class關鍵字聲明,類中包含屬性和方法。
- NULL 值表示變量沒有值,NULL是數據類型爲NULL的值
- 常量是一個簡單的表示符,在腳本中不可改變,設置常量 用define()函數,常量名不用$ 修改符。
PHP運算符
邏輯運算符:! && || and or xor
數組運算符:合併:+、比較:==, != , ! ==, ===
註釋,
- 關聯數組合並時:
+ 號,會自動去重,保留第一個重複的值;
array_merge($ arr1,$ arr2),自動去重,保留第二個重複的值 - 索引數組合並:
+ 號,同上,所以只保留第一個數組
array_merge(),相當於數組拼接在一起
全局變量
- $ GLOBA:是一個包含了全部變量的全局組合數組,變量名字即爲鍵名
- $ _SERVER:是一個包含了諸如頭信息,路徑,以及腳本位置的數組,包含:header、PATH、HTTP_HOST、HTTP_USER_AGENT
- $ _REQUEST:用於蒐集表單提交的數據
- $ _ENV:是一個包含服務器端環境變量的數組
- $ _POST、$ _GET、$ _FILES、$ _SESSION、$ _ENV
魔術變量
- __ LINE __:文件中的當前行號
- __ FILE__:文件的完整路徑和文件名
- __ DIR__ :文件所在的目錄
- __ FUNCTION__ :函數的名稱
- __ TRAIT__ :定義/聲明覆用類
- __ METHOD__ :類方法/函數的名稱
- __ NAMESPACE__ :命名空間的名稱
PHP引入命名空間作用
- 可解決用戶代碼與PHP內部類、函數、變量之間的衝突
- 創建別名的名稱,提高源代碼可讀性
PHP數組排序的函數小結
- sort():普通索引數組 升 序排列
- rsort():降序排列
- asort():關聯數組的 值 :升序
- ksort():關聯數組的鍵 :升序
- arsort():關聯數組 的值 :降序
- krsort():關聯數組的鍵 :降序
PHP文件處理
$ file = fopen(fname,mode);//文件名,打開模式
- r :只讀
- r+:讀寫
- w:只寫;文件不存在,創建文件; 會替換掉文件中原來的內容
- w+:讀寫;文件不存在,創建文件; 會替換掉文件中原來的內容
- a:追加;文件不存在,創建文件
- a+:讀、追加;文件不存在,創建文件
- x:只寫;文件不存在,創建文件,文件存在,返回false或報錯
- x+:讀寫;文件不存在,創建文件,文件存在,返回false或報錯
注意點:x 方式會將文件的指針指向文件頭
常用打開文件處理函數:
- fopen(fname,mode):打開文件
- fread(fname,length):讀取文件
- fgets(fname):讀取單行文件,調用後文件指針會自動移至下一行
- fgetc(fname):讀取單字符,調用後文件指針自動移至下一個字符
- feof(fname):檢測是否已到文件結尾,對遍歷未知長度的數據有用
- fclose(fname):關閉文件
Filesystem函數
- chgrp():改變文件組
- chmod():改變文件權限
- chown():改變文件所有者
- copy():複製文件
- clearstatcache():清除文件狀態緩存
- dirname():返回路徑中的目錄
- basename():返回路徑中文件名
- fgetss():從打開的文件中返回一行;並過濾掉html和php標籤
- file():將一個文件讀入數組中
- file_exists():檢查文件或者目錄是否存在
- file_get_contents():把文件讀入字符串中
- file_put_contens():把字符串寫入文件
- fileperms():返回文件的權限
- filetype():返回文件的類型
- filesize():返回文件的大小
- fseek():在打開的文件中定位
- fstat():返回一個關於一個打開文件的信息
- fwrite():寫入打開的文件
- glob(“*.txt”):返回一個包含匹配模式指定模式的文件名、目錄的數組
- is_dir():判斷是否是目錄
- is_file():判斷是否是文件
- is_executable():判斷是否是可執行文件
- is_readable():判斷是否可讀
- is_writeable():判斷是否可寫
- is_uploaded_file():判斷是否通過http post上傳
- is_link():判斷文件是否鏈接
- mkdir():創建目錄
- move_uploaded_file():移動文件到指定地方
- pathinfo():返回文件路徑的信息
- popen():打開一個進程
- readfile():讀取一個文件,並寫入到輸出緩衝中
- realpath():返回文件的絕對路徑名
- rename():重命名文件、目錄
- rmdir():刪除空的目錄
- stat():返回關於文件的信息
- tempfile():創建唯一的臨時文件
- touch():設置文件的訪問和修改時間
- unlink():刪除文件
Str 函數
- addslashes():返回在預定義的字符前添加反斜槓的字符串
- rtrim():刪除字符串右側的空白字符或其他字符
- explode(‘’,$ str):字符串打散成數組
- implode(‘ ’,array):數組分隔成字符串,join是別名
- htmlspecialchars():把預定義的字符轉爲html實體
- lcfirst():字符串首字母大寫,注意並不改變原字符串內容
- ucfirst():字符串首字母小寫
- lrim(str,length):刪除字符串左側的空白字符或其他字符
- parse_str():把查詢的字符串解析到變量中
- str_replace(s1,s2,allstr):在allstr中的s1替換成s2
- str_split(str,length):把字符串分隔到數組總,length默認0
- strstr(allstr ,‘str’):查找字符串在另一個字符出現,返回餘下部分字符(含本身)
- strcmp():比較兩個字符串,返回布爾值
- strip_tags():過濾字符串中html和php標籤
- strlen():返回字符串的長度
- strops():查找字符串在另一個字符出現的位置,返回數字
- strrev():字符串翻轉
- substr($ str ,6,10):返回字符串的一部分
Array函數
- array_column():返回數組中某一單列的值,二維數組好用
- array_combine():合併數組爲一個新的數組,一個爲鍵名,一個爲鍵值
- array_diff():比較數組,返回差集(只比較鍵值)
- array_diff_key():比較數組,返回差集(只比較鍵名)
- array_diff_assoc():比較數組,返回差集(比較鍵值和鍵名)
- array_intersect():比較數組,返回交集
- array_flip():交換數組中的鍵 和 值
- array_key_exists(‘key’,array):檢查指定鍵名是否存在數組中
- array_map(function(),array):數組中每個元素都發送函數,返回新值
- array_merge():合併數組,區別array_merge_recursive(),鍵名相同不會覆蓋,會把鍵名相同的元素從新組成一個數組;如果僅有一個索引數組,返回鍵名會從0開始的新索引數組
- array_pop():刪除數組中的最後一個元素
- array_push(array,v1,v2):在數組結尾處插入一個或者多個元素
- array_search(val,array):搜索指定的值,返回鍵名
- array_shift():刪除數組中的首個元素,並返回刪除元素
- array_splice():刪除、替換數組中指定的元素
- array_unique():數組去重
- array_values():返回數組中的值
- in_array(val,array):檢測數組中是否有某值
- list(val1,val2):數組中值賦給一組變量