基本知識
1、引用
php語言中有引用的概念褐筛,相當(dāng)于指針类少。如$a = &$b
<?php
$a = 1;
$b = &$a;
$b = "2$b";
echo "$a,$b"
?>
2、運算符優(yōu)先級
(new) > (++渔扎、–) > (*硫狞、/、%) > (+、-) > (&&)> (||) > (?:) > (==) > (and) > (xor) > (or)
WEB編程
1残吩、_GET和_POST獲取表單數(shù)據(jù)
2财忽、處理多選框時,要在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>,頁面輸出的結(jié)果會更整潔
(3) count() 計算數(shù)組元素的個數(shù)
(4) array_chunk($array,$size,$preserve) chunk:塊旁瘫,數(shù)組塊祖凫,組塊; 函數(shù)功能時對一個數(shù)組進行分割,$array,原數(shù)組酬凳;$size,分割的數(shù)組大小,大于0惠况;$preserve,是否使用原索引。
(5) array_merge($array...) 數(shù)組合并宁仔,只接受array類型的參數(shù)稠屠,合并失敗,返回null翎苫;如果數(shù)組索引時數(shù)字索引权埠,會從‘0’開始編號索引;如果時字符串索引煎谍,則會出現(xiàn)覆蓋的情況攘蔽。
(6) current() 返回數(shù)組當(dāng)前的元素
(7) prev() 返回當(dāng)前元素的前一個元素,該方法會移動數(shù)組內(nèi)部的指針,如果不存在前一個返回false
(8) next() 返回當(dāng)前元素的后一個元素呐粘,該方法可以移動數(shù)組內(nèi)部的指針,如果不存在則返回false
(9) end() 返回最后一個元素满俗,該方法會移動數(shù)組內(nèi)部的指針
(10) sort($array) 對數(shù)組進行排序
(11) rsort($array) 對數(shù)組逆序排列
(12) asort($array) 對數(shù)組元素進行排序,保持?jǐn)?shù)組的原索引關(guān)系不變
(13) ksort($array) 對數(shù)組元素按索引名排序作岖,保持原數(shù)組索引關(guān)系保持不變
(14) arsot()
(15) krsort()
(16) shuffle() 隨機打亂數(shù)組唆垃,刪除原來的索引
(17) array_reverse($array,$preserve) 將原數(shù)組按反序排序,返回排序后的數(shù)組痘儡,$preserve 是否保留索引辕万,默認(rèn)為false.
(18) reset() 重置數(shù)組,將數(shù)組內(nèi)部指針移動到第一個元素沉删,并返回第一個元素蓄坏。,如果數(shù)組為空丑念,返回false
(19) list(), 將數(shù)組元素賦值給變量涡戳,嚴(yán)格講,和array一樣脯倚,并不是函數(shù)渔彰,僅能用于數(shù)字索引的數(shù)組嵌屎,且假定索引從0開始。
(20) 棧操作恍涂,array_push(array,mixed value)將一個或多個元素壓棧宝惰,返回數(shù)組中新的元素總數(shù); array_pop(array),出棧再沧,棧為空尼夺,返回null
(21) 隊列操作,array_shift(array) 刪除第一個元素并返回炒瘸; array_unshift(array淤堵,val1,val2,...),將參數(shù)按照順序加入隊列中
(22) array_change_key_case(array顷扩,CASE_LOWER/CASE_UPPER) 將字符串索引的轉(zhuǎn)換為大小寫,對數(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ù)組的鍵-值對东臀,如果同一個值出現(xiàn)多次,則最后的索引會轉(zhuǎn)換成對應(yīng)的值
(25) array_fill(int start,int num,mixed val)
(26) array_count_values(array) 統(tǒng)計數(shù)組中元素的個數(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ù)組的個數(shù)與回調(diào)函數(shù)的參數(shù)相同
(30) array_filter(array,callbackfunc); 過濾數(shù)組中的元素贵扰,當(dāng)回調(diào)函數(shù)返回true時仇穗,元素放到結(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用于限制返回數(shù)組中最多有幾個元素;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長度(默認(rèn)到結(jié)尾)的字符串替換為replacement耘子,start和length可以為負(fù)數(shù),表示從尾部開始,length為負(fù)數(shù)時表示倒數(shù)但是不包括倒數(shù)第length個球切。
(3) 輸出谷誓,print 嚴(yán)格的講,print是語言結(jié)構(gòu)吨凑,而不是函數(shù)捍歪,與echo的不同是print返回值是1户辱,而echo沒有返回值;echo可以打印多個string糙臼,而print只能打印一個string庐镐。
(4) 格式化輸出 sprintf(format,mixed args) ,類似于C 語言的格式化輸出,類似的函數(shù)printf ,在這里假如使用$進行補齊变逃,需要使用"'$"這樣的寫法
(5) 獲取子串 substr(string,start,length) 從string的start位置開始截取length長度的子字符串必逆;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) 獲取字符串長度 strlen(string) ,mb_strlen(string,encode)
(8) 大小寫轉(zhuǎn)換 strtolower strtoupper
(9) 處理html標(biāo)記的字符串 htmlentities(string) htmlspecialchars();html_entity_decode(string) 將html實體解析成字符串
(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端補齊成長度為length的字符串嚷那。
(11) 散列值 md5() sha1()
(12) str_split(string[,split_length]) 將string分割成長度為length的子字符串并返回一個數(shù)組胞枕;split(regex,string) 支持正則,根據(jù)regex分割字符串string
文件操作內(nèi)置函數(shù)
(1) opendir(path) 打開目錄魏宽,返回一個資源類型的數(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) 打開文件派桩,返回一個資源類型數(shù)據(jù),失敗返回false
(8) fclose(fp) 關(guān)閉文件,參數(shù)是fopen的返回值
(9) fgets(fp) 讀取一行蚌斩,參數(shù)需要是一個文件句柄
(10) file(filename) 讀取整個文件铆惑,返回一個數(shù)組,每一個元素為文件的一行
(11) get_file_contents(filename) 將整個文件讀到一個字符串中;fread(fp,length) 讀取整個文件送膳,可以安全讀取二進制文件员魏,如果單純的想將一個文件的內(nèi)容讀取到字符串,應(yīng)該使用性能更好的file_get_contens();
(12) readfile() 讀入整個文件叠聋,并寫入輸出緩沖區(qū)撕阎,返回讀取的字節(jié)數(shù)
(13) fwrite(fp,content),返回寫入的字節(jié)數(shù)碌补,
(14) fputs(),與fwrite一樣
(15) file_put_contents(filename,data虏束,mode)名斟,返回寫入的字節(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,可以用于去除擴展名宫屠; 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打開url浪蹂,此時fgetss可以過濾掉html標(biāo)簽
(28) include() require()
(29) filemtime() fileatime() filectime() 返回unix時間戳
時間日期內(nèi)置函數(shù)
(1) date(format[,timestamp])
(2) mktime(hour,minute,second,month,day,year) 省略的參數(shù)將以本地日期和時間代替抵栈。
(3) getdate([timestamp])
1
2
3
URL處理內(nèi)置函數(shù)
(1) urlencode(str) 返回值字符串中所有的非字母和數(shù)字字符變成一個百分號(%) 和一個兩位的十六進制數(shù),空格被轉(zhuǎn)換成+,-坤次、_和.不做任何轉(zhuǎn)換
(2) urldecode(str)
數(shù)學(xué)運算
(1) abs(num)
(2) ceil(num)
(3) floor(num)
(4) sqrt(num)
(5) round(num,precision) 四舍五入成指定precision位數(shù)
(6) 進制之間的轉(zhuǎn)換 bin 二進制古劲,dec 十進制, oct 八進制缰猴,hex 十六進制产艾,十進制轉(zhuǎn)二進制 decbin(num) ,十進制轉(zhuǎn)八進制 decoct(num) ,其余類似滑绒,不存在二進制闷堡、八進制、十六進制之間的轉(zhuǎn)換,若要實現(xiàn)這些轉(zhuǎn)換疑故,可以使用base_convert(num,from,to) 如 base_convert("A4",16,2);定義十六進制時不需要加0x34
(7) rand() mt_rand(min杠览,max) 隨機數(shù),其中mt_rand()可以生成指定范圍內(nèi)的隨機數(shù)焰扳,默認(rèn)時0~RAND_MAX
數(shù)據(jù)庫操作
(1) 連接數(shù)據(jù)庫 conn = mysql_connect(host,username,password)
(2) 關(guān)閉鏈接 mysql_close(conn);
(3) 執(zhí)行語句 mysql_query(sql) 僅對show倦零,select误续,describe等語句返回一個資源標(biāo)示吨悍,對于其他SQL語句,mysql_query() 在執(zhí)行成功時返回TRUE蹋嵌,出錯時返回FALSE
(4) 處理查詢結(jié)果集
mysql_affected_rows() 取得前一次mysql操作所影響的記錄行數(shù)育瓜,失敗返回-1
mysql_fetch_row($result) result是執(zhí)行mysql_query()之后返回的資源標(biāo)識,該函數(shù)從查詢結(jié)果集中返回一行數(shù)據(jù)栽烂。該函數(shù)返回值時一個數(shù)組躏仇,其中每一個元素對應(yīng)一行結(jié)果記錄的字段值恋脚。依次調(diào)用該函數(shù)可以返回結(jié)果集中的下一行,如果沒有更多行焰手,函數(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()類似,返回的時關(guān)聯(lián)數(shù)組
(5) 獲取字段信息 mysql_fetch_field(result[,field_offset]) 返回一個object對象躲履,屬性包括包括name见间,table,not_null,primary_key等
(6) 選擇數(shù)據(jù)庫工猜,mysql_select_db(databasename) 鏈接上數(shù)據(jù)庫之后米诉,使用該函數(shù)選擇databasename數(shù)據(jù)庫
(7) 獲取結(jié)果集行數(shù) mysql_num_rows(result) ,僅對select語句有效;要取得insert,update篷帅,delete執(zhí)行影響的結(jié)果行數(shù)史侣,需要使用mysql_affected_rows()
正則表達式
(1) int ereg(pattern,string[,®s]) pattern 正則表達式,待匹配string魏身,匹配結(jié)果放在regs中抵窒,其中regs[0] 存放匹配到的整個字符串,其余的1,2...依次存放合乎規(guī)則的字符串叠骑。省略regs李皇,則只單純使用正則表達式作匹配,如果在string中找到pattern模式的匹配宙枷,那么該函數(shù)返回所匹配字符串的長度掉房,如果沒有傳遞入可選參數(shù)regs或者所匹配的字符串長度為0,則返回1慰丛,如果沒有找到匹配或者出錯卓囚,返回false。
(2) int eregi(pattern,string,regs) 忽略大小寫
(3) split(pattern,string[,limit]) 利用正則表達式分割字符串
(4) sql_regcase(string) 返回string相匹配的正則表達式诅病,這個正則表達式不區(qū)分大小寫
(5) ereg_replace(pattern,replacement,string) 替換匹配字符串哪亿,eregi_replace(pattern,replacement,string) 不區(qū)分大小寫
(6) 與perl兼容的正則表達式函數(shù),perl正則表達式需要使用定界符(/),比如贤笆,"/<\/\w+>/"蝇棉。函數(shù):array preg_grep(pattern,input[,flag]) 類似ereg(),返回相匹配的元素,當(dāng)flag=1時芥永,返回數(shù)組中時不匹配元素篡殷;
(7) int preg_match(pattern,subject,matches[,flag]); 類似ereg(),捕獲的匹配放到mathes中
(8) int preg_match_all(pattern,subject,matches[,flag]); 全局搜索,找到第一個匹配之后埋涧,會繼續(xù)搜索板辽。搜索的結(jié)果存放在matches奇瘦;
(9) mixed preg_replace(pattern,replacement,subject[,limit]),其中公pattern,replacement可以是數(shù)組劲弦。
(10) array preg_split(pattern,subject[,limit[,flag]])