基本知識(shí)1、引用
php語(yǔ)言中有引用的概念,相當(dāng)于指針。如$a = &$b <?php
$a = 1;
$b = &$a;
$b = "2$b";
echo "$a,$b"
?>
- 2、運(yùn)算符優(yōu)先級(jí)
(new) > (++、–) > (*、/、%) > (+、-) > (&&)> (||) > (?:) > (==) > (and) > (xor) > (or) WEB編程1、_GET和_POST獲取表單數(shù)據(jù)
2、處理多選框時(shí),要在html中定義成數(shù)組的形式,如<input name="hobby[]" type="checkbox" value="sport"> 內(nèi)置函數(shù)數(shù)組內(nèi)置函數(shù) (1) for、foreach循環(huán)輸出數(shù)組元素
for:按整數(shù)順序索引排列數(shù)組
foreach($array as $value)
foreach($array as $key=>$value)
(2) print_r() 查看數(shù)組結(jié)構(gòu),如果在輸出前輸出<pre>,頁(yè)面輸出的結(jié)果會(huì)更整潔
(3) count() 計(jì)算數(shù)組元素的個(gè)數(shù)
(4) array_chunk($array,$size,$preserve) chunk:塊,數(shù)組塊,組塊; 函數(shù)功能時(shí)對(duì)一個(gè)數(shù)組進(jìn)行分割,$array,原數(shù)組;$size,分割的數(shù)組大小,大于0;$preserve,是否使用原索引。
(5) array_merge($array...) 數(shù)組合并,只接受array類型的參數(shù),合并失敗,返回null;如果數(shù)組索引時(shí)數(shù)字索引,會(huì)從'0’開(kāi)始編號(hào)索引;如果時(shí)字符串索引,則會(huì)出現(xiàn)覆蓋的情況。
(6) current() 返回?cái)?shù)組當(dāng)前的元素
(7) prev() 返回當(dāng)前元素的前一個(gè)元素,該方法會(huì)移動(dòng)數(shù)組內(nèi)部的指針,如果不存在前一個(gè)返回false
(8) next() 返回當(dāng)前元素的后一個(gè)元素,該方法可以移動(dòng)數(shù)組內(nèi)部的指針,如果不存在則返回false
(9) end() 返回最后一個(gè)元素,該方法會(huì)移動(dòng)數(shù)組內(nèi)部的指針
(10) sort($array) 對(duì)數(shù)組進(jìn)行排序
(11) rsort($array) 對(duì)數(shù)組逆序排列
(12) asort($array) 對(duì)數(shù)組元素進(jìn)行排序,保持?jǐn)?shù)組的原索引關(guān)系不變
(13) ksort($array) 對(duì)數(shù)組元素按索引名排序,保持原數(shù)組索引關(guān)系保持不變
(14) arsot()
(15) krsort()
(16) shuffle() 隨機(jī)打亂數(shù)組,刪除原來(lái)的索引
(17) array_reverse($array,$preserve) 將原數(shù)組按反序排序,返回排序后的數(shù)組,$preserve 是否保留索引,默認(rèn)為false.
(18) reset() 重置數(shù)組,將數(shù)組內(nèi)部指針移動(dòng)到第一個(gè)元素,并返回第一個(gè)元素。,如果數(shù)組為空,返回false
(19) list(), 將數(shù)組元素賦值給變量,嚴(yán)格講,和array一樣,并不是函數(shù),僅能用于數(shù)字索引的數(shù)組,且假定索引從0開(kāi)始。
(20) 棧操作,array_push(array,mixed value)將一個(gè)或多個(gè)元素壓棧,返回?cái)?shù)組中新的元素總數(shù); array_pop(array),出棧,棧為空,返回null
(21) 隊(duì)列操作,array_shift(array) 刪除第一個(gè)元素并返回; array_unshift(array,val1,val2,...),將參數(shù)按照順序加入隊(duì)列中
(22) array_change_key_case(array,CASE_LOWER/CASE_UPPER) 將字符串索引的轉(zhuǎn)換為大小寫(xiě),對(duì)數(shù)字索引不起作用
(23) 集合操作:交集,array_intersect(array,arr1...)求數(shù)組元素的交集,array_intersect_assoc()求數(shù)組鍵-值的交集;差集,array_diff(array,arr1...) 求數(shù)組的差集,array_diff_assoc(array,arr1...)求鍵-值的差集 intersect 交集;相交 diff
(24) array_flip() 交換數(shù)組的鍵-值對(duì),如果同一個(gè)值出現(xiàn)多次,則最后的索引會(huì)轉(zhuǎn)換成對(duì)應(yīng)的值
(25) array_fill(int start,int num,mixed val)
(26) array_count_values(array) 統(tǒng)計(jì)數(shù)組中元素的個(gè)數(shù),返回一個(gè)數(shù)組,鍵時(shí)原數(shù)組的值,值為出現(xiàn)的次數(shù)
(27) array_key_exists(key,array)檢查索引是否存在于數(shù)組中
(28) array_keys(array,[,searchvalue][,strict]) 獲取所有的索引;array_values(),返回所有的元素,而不管是否重復(fù)
(29) array_map(callbackfunc,arr1,arr2,...),數(shù)組的個(gè)數(shù)與回調(diào)函數(shù)的參數(shù)相同
(30) array_filter(array,callbackfunc); 過(guò)濾數(shù)組中的元素,當(dāng)回調(diào)函數(shù)返回true時(shí),元素放到結(jié)果集中,鍵名保持不變。
(31) in_array(var,array) var是否在array中
(32) key(array) 返回當(dāng)前元素的key
字符串內(nèi)置函數(shù) (1) 分割合并 explode(separator,str[,limit]) 使用字符串separator分割字符串str,limit用于限制返回?cái)?shù)組中最多有幾個(gè)元素;implode(bds,array),將數(shù)組合并成字符串,使用bds鏈接元素
(2) 比較和替換 strcmp(str1,str2) ;str_replace(search,replace,str),將str中search全部替換成replace,變形str_replace(searchArr,replaceArr,str),參數(shù)也可以是數(shù)組;substr_replace(string,replacement,start[,length]) 將string的start后的length長(zhǎng)度(默認(rèn)到結(jié)尾)的字符串替換為replacement,start和length可以為負(fù)數(shù),表示從尾部開(kāi)始,length為負(fù)數(shù)時(shí)表示倒數(shù)但是不包括倒數(shù)第length個(gè)。
(3) 輸出,print 嚴(yán)格的講,print是語(yǔ)言結(jié)構(gòu),而不是函數(shù),與echo的不同是print返回值是1,而echo沒(méi)有返回值;echo可以打印多個(gè)string,而print只能打印一個(gè)string。
(4) 格式化輸出 sprintf(format,mixed args) ,類似于C 語(yǔ)言的格式化輸出,類似的函數(shù)printf ,在這里假如使用$進(jìn)行補(bǔ)齊,需要使用"'$"這樣的寫(xiě)法
(5) 獲取子串 substr(string,start,length) 從string的start位置開(kāi)始截取length長(zhǎng)度的子字符串;strstr(string,needle,flag) 查找string中needle第一次出現(xiàn)的位置,并返回之后的所有字符(包括本字符),若flag為true,則返回之前的所有字符(不包括本字符);strchr() 同strstr;strrchr(string,needle,flag) string中needle最后一次出現(xiàn)的位置,返回之后的所有字符;strpos(string,needle[,start]) needle在string中第一次出現(xiàn)的位置。
(6) 刪除首位兩端的多余字符,trim(),ltrim(),rtrim(),默認(rèn)刪除兩端的空白字符,也可以自己指定。如trim(string,reStr)
(7) 獲取字符串長(zhǎng)度 strlen(string) ,mb_strlen(string,encode)
(8) 大小寫(xiě)轉(zhuǎn)換 strtolower strtoupper
(9) 處理html標(biāo)記的字符串 htmlentities(string) htmlspecialchars();html_entity_decode(string) 將html實(shí)體解析成字符串
(10) 重復(fù)生成字符串 str_repeat(string,num);str_pad(string,length,pad,pad_type) pad_type的值是常量,STR_PAD_LEFT,STR_PAD_RIGHT,STR_PAD_BOTH。使用pad在string的pad_type端補(bǔ)齊成長(zhǎng)度為length的字符串。
(11) 散列值 md5() sha1()
(12) str_split(string[,split_length]) 將string分割成長(zhǎng)度為length的子字符串并返回一個(gè)數(shù)組;split(regex,string) 支持正則,根據(jù)regex分割字符串string
文件操作內(nèi)置函數(shù) (1) opendir(path) 打開(kāi)目錄,返回一個(gè)資源類型的數(shù)值
(2) closedir(path) 關(guān)閉目錄
(3) readdir(dir) 讀取文件夾,獲取文件夾下的文件名而不是文件路徑
(4) scandir(string dir) 返回文件夾中的文件名數(shù)組,失敗返回false,參數(shù)dir不是目錄返回false
(5) getcwd() 獲取當(dāng)前的工作目錄
(6) chdir() 改變當(dāng)前的目錄
(7) fp=fopen(filename,mode) 打開(kāi)文件,返回一個(gè)資源類型數(shù)據(jù),失敗返回false
(8) fclose(fp) 關(guān)閉文件,參數(shù)是fopen的返回值
(9) fgets(fp) 讀取一行,參數(shù)需要是一個(gè)文件句柄
(10) file(filename) 讀取整個(gè)文件,返回一個(gè)數(shù)組,每一個(gè)元素為文件的一行
(11) get_file_contents(filename) 將整個(gè)文件讀到一個(gè)字符串中;fread(fp,length) 讀取整個(gè)文件,可以安全讀取二進(jìn)制文件,如果單純的想將一個(gè)文件的內(nèi)容讀取到字符串,應(yīng)該使用性能更好的file_get_contens();
(12) readfile() 讀入整個(gè)文件,并寫(xiě)入輸出緩沖區(qū),返回讀取的字節(jié)數(shù)
(13) fwrite(fp,content),返回寫(xiě)入的字節(jié)數(shù),
(14) fputs(),與fwrite一樣
(15) file_put_contents(filename,data,mode),返回寫(xiě)入的字節(jié)數(shù),data可以是一維數(shù)組,mode的取值FILE_USE_INCLUDE_PATH,F(xiàn)ILE_APPEND,LOCK_EX
(16) fileowner(filename) 返回文件擁有者ID
(17) filesize() 取得文件的大小
(18) filetype() 取得文件類型,返回值file,dir,link,block,unknown
(19) is_dir(filename) is_file(filename) isreadable() iswriteable()
(20) basename(filename[,suffix]) 取得路徑中的文件名部分,若suffix存在則返回的文件名不包括suffix,可以用于去除擴(kuò)展名; dirname() 取得路徑中的目錄名部分
(21) file_exists(filename) 判斷文件是否存在
(22) mkdir(pathname,mode) 創(chuàng)建成功返回true,失敗返回false
(23) rmdir(pathname) 目錄必須空目錄
(24) unlink(filename) 刪除文件
(25) copy(source,desc) 將source復(fù)制到desc,成功返回true
(26) rename(oldname,newname)
(27) fgetss(handle) 可以使用fopen打開(kāi)url,此時(shí)fgetss可以過(guò)濾掉html標(biāo)簽
(28) include() require()
(29) filemtime() fileatime() filectime() 返回unix時(shí)間戳
URL處理內(nèi)置函數(shù) (1) urlencode(str) 返回值字符串中所有的非字母和數(shù)字字符變成一個(gè)百分號(hào)(%) 和一個(gè)兩位的十六進(jìn)制數(shù),空格被轉(zhuǎn)換成+,-、_和.不做任何轉(zhuǎn)換
(2) urldecode(str)
數(shù)學(xué)運(yùn)算 (1) abs(num)
(2) ceil(num)
(3) floor(num)
(4) sqrt(num)
(5) round(num,precision) 四舍五入成指定precision位數(shù)
(6) 進(jìn)制之間的轉(zhuǎn)換 bin 二進(jìn)制,dec 十進(jìn)制, oct 八進(jìn)制,hex 十六進(jìn)制,十進(jìn)制轉(zhuǎn)二進(jìn)制 decbin(num) ,十進(jìn)制轉(zhuǎn)八進(jìn)制 decoct(num) ,其余類似,不存在二進(jìn)制、八進(jìn)制、十六進(jìn)制之間的轉(zhuǎn)換,若要實(shí)現(xiàn)這些轉(zhuǎn)換,可以使用base_convert(num,from,to) 如 base_convert("A4",16,2);定義十六進(jìn)制時(shí)不需要加0x34
(7) rand() mt_rand(min,max) 隨機(jī)數(shù),其中mt_rand()可以生成指定范圍內(nèi)的隨機(jī)數(shù),默認(rèn)時(shí)0~RAND_MAX
數(shù)據(jù)庫(kù)操作 (1) 連接數(shù)據(jù)庫(kù) conn = mysql_connect(host,username,password)
(2) 關(guān)閉鏈接 mysql_close(conn);
(3) 執(zhí)行語(yǔ)句 mysql_query(sql) 僅對(duì)show,select,describe等語(yǔ)句返回一個(gè)資源標(biāo)示,對(duì)于其他SQL語(yǔ)句,mysql_query() 在執(zhí)行成功時(shí)返回TRUE,出錯(cuò)時(shí)返回FALSE
(4) 處理查詢結(jié)果集
mysql_affected_rows() 取得前一次mysql操作所影響的記錄行數(shù),失敗返回-1
mysql_fetch_row($result) result是執(zhí)行mysql_query()之后返回的資源標(biāo)識(shí),該函數(shù)從查詢結(jié)果集中返回一行數(shù)據(jù)。該函數(shù)返回值時(shí)一個(gè)數(shù)組,其中每一個(gè)元素對(duì)應(yīng)一行結(jié)果記錄的字段值。依次調(diào)用該函數(shù)可以返回結(jié)果集中的下一行,如果沒(méi)有更多行,函數(shù)返回false。
mysql_fetch_array(result,type) 返回一行關(guān)聯(lián)數(shù)組,或普通數(shù)組,或二者兼有,type:MYSQL_ASSOC 返回關(guān)聯(lián)數(shù)組 MYSQL_NUM 普通數(shù)組 MYSQL_BOTH 二者兼有,通常使用該函數(shù)獲取各字段的值
mysql_fetch_assoc(result) 與mysql_fetch_array()類似,返回的時(shí)關(guān)聯(lián)數(shù)組
(5) 獲取字段信息 mysql_fetch_field(result[,field_offset]) 返回一個(gè)object對(duì)象,屬性包括包括name,table,not_null,primary_key等
(6) 選擇數(shù)據(jù)庫(kù),mysql_select_db(databasename) 鏈接上數(shù)據(jù)庫(kù)之后,使用該函數(shù)選擇databasename數(shù)據(jù)庫(kù)
(7) 獲取結(jié)果集行數(shù) mysql_num_rows(result) ,僅對(duì)select語(yǔ)句有效;要取得insert,update,delete執(zhí)行影響的結(jié)果行數(shù),需要使用mysql_affected_rows()
正則表達(dá)式 (1) int ereg(pattern,string[,®s]) pattern 正則表達(dá)式,待匹配string,匹配結(jié)果放在regs中,其中regs[0] 存放匹配到的整個(gè)字符串,其余的1,2...依次存放合乎規(guī)則的字符串。省略regs,則只單純使用正則表達(dá)式作匹配,如果在string中找到pattern模式的匹配,那么該函數(shù)返回所匹配字符串的長(zhǎng)度,如果沒(méi)有傳遞入可選參數(shù)regs或者所匹配的字符串長(zhǎng)度為0,則返回1,如果沒(méi)有找到匹配或者出錯(cuò),返回false。
(2) int eregi(pattern,string,regs) 忽略大小寫(xiě)
(3) split(pattern,string[,limit]) 利用正則表達(dá)式分割字符串
(4) sql_regcase(string) 返回string相匹配的正則表達(dá)式,這個(gè)正則表達(dá)式不區(qū)分大小寫(xiě)
(5) ereg_replace(pattern,replacement,string) 替換匹配字符串,eregi_replace(pattern,replacement,string) 不區(qū)分大小寫(xiě)
(6) 與perl兼容的正則表達(dá)式函數(shù),perl正則表達(dá)式需要使用定界符(/),比如,"/<\/\w+>/"。函數(shù):array preg_grep(pattern,input[,flag]) 類似ereg(),返回相匹配的元素,當(dāng)flag=1時(shí),返回?cái)?shù)組中時(shí)不匹配元素;
(7) int preg_match(pattern,subject,matches[,flag]); 類似ereg(),捕獲的匹配放到mathes中
(8) int preg_match_all(pattern,subject,matches[,flag]); 全局搜索,找到第一個(gè)匹配之后,會(huì)繼續(xù)搜索。搜索的結(jié)果存放在matches;
(9) mixed preg_replace(pattern,replacement,subject[,limit]),其中公pattern,replacement可以是數(shù)組。
(10) array preg_split(pattern,subject[,limit[,flag]])
|