php常见面试题
1.哈希沖突解決辦法
鏈地址法(拉鏈法)?:value設(shè)置成鏈表
開放尋址法:當(dāng)要插入一個元素時,可以連續(xù)地檢查散列表的個各項,直到找到一個空槽來放置這個元素為止。檢查順序可以是線性的,可以是二次的,也可以是再次散列的。
2.靜態(tài)變量 靜態(tài)變量本身就是靜態(tài)存儲方式,?全局變量也是,局部變量不是 靜態(tài)存儲方式是指在程序運行期間分配固定的存儲空間,靜態(tài)存儲變量通常是在變量定義時就分定存儲單元并一直保持不變,直至整個程序結(jié)束。 動態(tài)存儲變量是在程序執(zhí)行過程中,使用它時才分配存儲單元,使用完畢立即釋放。 當(dāng)一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。?而靜態(tài)全局變量則限制了其作用域,?即只在定義該變量的源文件內(nèi)有效全局變量作用于整個源程序
3.共享鎖,排它鎖的區(qū)別 共享鎖【S鎖】【讀鎖】 又稱讀鎖,若事務(wù)T對數(shù)據(jù)對象A加上S鎖,則事務(wù)T可以讀A但不能修改A,其他事務(wù)只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這保證了其他事務(wù)可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。 排他鎖【X鎖】【寫鎖。】 又稱寫鎖。若事務(wù)T對數(shù)據(jù)對象A加上X鎖,事務(wù)T可以讀A也可以修改A,其他事務(wù)不能再對A加任何鎖,直到T釋放A上的鎖。這保證了其他事務(wù)在T釋放A上的鎖之前不能再讀取和修改A。
4.加密方法 對稱加密和非對稱加密 非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey) 非對稱加密算法強度復(fù)雜、安全性依賴于算法與密鑰但是由于其算法復(fù)雜,而使得加密解密速度沒有對稱加密解密的速度快 對稱加密雙方使用相同鑰匙,安全性得不到保證 對稱加密算法公開、計算量小、加密速度快、加密效率高、可逆
MD5加密,根據(jù)輸出值,不能得到原始的明文,即其過程不可逆,任意長度的數(shù)據(jù),算出的MD5值長度都是固定的。 php?md5($str)??輸出值為32位,?MD5?也可以加鹽之后再加密
Base64加密方式(可逆)?php?base64_encode($str)?base64_decode($str) AES加密(對稱加密) RSA加密(非對稱加密)
5.操作數(shù)組,字符串的方法 數(shù)組:? array()?count?sort?asort?ksort??is_array?in_array?foreach? array_push():將一個或多個元素插入數(shù)組的末尾(入棧)。 array_pop():刪除數(shù)組的最后一個元素(出棧)。 array_shift():刪除數(shù)組中首個元素,并返回被刪除元素的值。 array_unshift():在數(shù)組開頭插入一個或多個元素。 range():創(chuàng)建包含指定范圍單元的數(shù)組。 shuffle():將數(shù)組打亂。 array_reverse()?:?返回一個單元順序相反的數(shù)組 list():?將數(shù)組中元素的值賦值給變量,批量聲明變量 array_merge():?合并一個或多個數(shù)組 array_key():返回數(shù)組中所有的鍵名 array_values():返回數(shù)組中所有的值
字符串: strlen?explode?strpos?substr?md5? strrev:?反轉(zhuǎn)字符串 chunk_split:把字符串分割為一連串更小的部分 trim():去除字符串首尾處的空白字符(或者其他字符) str_replace:以其他字符替換字符串中的一些字符 ucfirst:?將字符串第一個字符改大寫 substr_count:計算子串在字符串中出現(xiàn)的次數(shù) str_replace:?替換字符串函數(shù) strstr():查找字符串的首次出現(xiàn)位置,返回?第一次出現(xiàn)的位置開始到結(jié)尾的字符串 addslashes():?轉(zhuǎn)義字符串 htmlspecialchars():?HTML?實體轉(zhuǎn)義
6.魔術(shù)方法 __get():讀取不可訪問屬性的值 __set():在給不可訪問屬性賦值 __isset()?:當(dāng)對不可訪問屬性調(diào)用?isset()?或?empty() __unset():當(dāng)對不可訪問屬性調(diào)用?unset()? __construct():具有構(gòu)造函數(shù)的類會在每次創(chuàng)建新對象時先調(diào)用此方法 __destruct():?析構(gòu)函數(shù)會在到某個對象的所有引用都被刪除或者當(dāng)對象被顯式銷毀時執(zhí)行。 __call():在對象中調(diào)用一個不可訪問方法 __callStatic():?在靜態(tài)上下文中調(diào)用一個不可訪問方法時 _toString():?用于一個類被當(dāng)成字符串時應(yīng)怎樣回應(yīng)
7.@是為了抑制錯誤顯示 讓用戶看不到,提升用戶體驗。注意:只是抑制錯誤,但是錯誤還是存在的,還會拋出異常。
8.debug_backtrace()? 函數(shù)生成?backtrace(回溯跟 蹤),函數(shù)棧信息 返回一個數(shù)組: Array?(?????[0]?=>?Array?(?????????[file]?=>?C:\webfolder\test.php?????????[line]?=>?6?????????[function]?=>?c?????????[args]?=>?Array?(?????????????[0]?=>?Cleveland?????????)?????)?????[1]?=>?Array?(?????????[file]?=>?C:\webfolder\test.php?????????[line]?=>?3?????????[function]?=>?b?????????[args]?=>?Array?(?????????????[0]?=>?Glenn?????????)?????)?????[2]?=>?Array?(?????????[file]?=>?C:\webfolder\test.php?????????[line]?=>?11?????????[function]?=>?a?????????[args]?=>?Array?(?????????????[0]?=>?Peter?????????)?????)?)
9.魔術(shù)常量
10.PHP三種訪問修飾符 在PHP5中如果類沒有指定成員的訪問修飾符,默認(rèn)就是public的訪問權(quán)限。 ?public(公共的、默認(rèn))?能在程序的任意地方引用,類內(nèi)類外都可以引用, ?protected(受保護(hù)的)?聲明的類內(nèi)能用,繼承類能引用 ?private(私有的)只能在聲明的類里引用
11.參數(shù)傳遞
12.global?$GLOBALS global?關(guān)鍵詞用于在函數(shù)內(nèi)訪問全局變量。 $GLOBALS[index]?的數(shù)組中存儲了所有的全局變量。下標(biāo)存有變量名。這個數(shù)組在函數(shù)內(nèi)也可以訪問,并能夠用于直接更新全局變量。 在?PHP?中,作用域是不重疊的,函數(shù)之外的是全局變量,函數(shù)內(nèi)部定義的則是局部變量
13.數(shù)組排序
14.解析url (1.)parse_url?:?解析?URL?字符串。 返回一個數(shù)組{ ??"scheme"????協(xié)議名 ??"host"????域名 ??"port"??端口號 ??"path"?路徑??????????例:?"/path/login.php" ?"query"??請求參數(shù)??例?:?"arg=value&a=b" } (2.)利用$_SERVER內(nèi)置數(shù)組變量 QUERY_STRING:?查詢字符串??例?:?"arg=value&a=b" HTTP_HOST:?當(dāng)前請求頭中?Host:?項的內(nèi)容 REQUEST_URI:?URI?用來指定要訪問的頁面。例如?“/index.html”。 (3.)利用pathinfo內(nèi)置函數(shù) $test?=?pathinfo("http://localhost:8080/path/index.php?a=b&c=d"); Array ( ????[dirname]?=>?http://localhost:8080/path ????[basename]?=>?index.php?a=b&c=d ????[extension]?=>?php?a=b&c=d ????[filename]?=>?index ) (4.)利用basename內(nèi)置函數(shù) $test?=?basename("http://localhost/path/index.php?name=tank&sex=1#top"); 結(jié)果如下 index.php?name=tank&sex=1#top
15.超全局變量 超全局變量是在全部作用域中始終可用的內(nèi)置變量,這意味著它們在一個腳本的全部作用域中都可用。在函數(shù)或方法中無需執(zhí)行?global?$variable;?就可以訪問它們。
$GLOBALS?—?引用全局作用域中可用的全部變量 $_SERVER?—?服務(wù)器和執(zhí)行環(huán)境信息 $_GET?—?HTTP?GET?變量 $_POST?—?HTTP?POST?變量 $_FILES?—?HTTP?文件上傳變量 $_REQUEST?—?HTTP?Request?變量,?默認(rèn)情況下包含了?$_GET,$_POST?和?$_COOKIE?的數(shù)組 $_SESSION?—?Session?變量 $_ENV?—?環(huán)境變量 $_COOKIE?—?HTTP?Cookies
16.函數(shù) 函數(shù)名是大小寫無關(guān)的
(1)目錄: is_dir():?判斷路徑是否是目錄 mkdir():創(chuàng)建目錄 opendir()?:打開目錄句柄 readdir():返回目錄中下一個文件的文件名 closedir():關(guān)閉目錄句柄
(2)文件 file_exists()?判斷文件是否存在 file_put_contents()?函數(shù)把一個字符串寫入文件中。與依次調(diào)用?fopen(),fwrite()?以及?fclose()?功能一樣。 file_get_contents()?把文件內(nèi)容?或者?url返回的內(nèi)容?全部讀入字符串? 注:請求url可能存在超時的現(xiàn)象,如果php-fpg設(shè)置的是無超時時間,進(jìn)而可能導(dǎo)致php-fpm進(jìn)程一直占用,?阻塞請求處理,返回大量502 fopen():打開文件或者?URL fwrite():函數(shù)寫入文件(可安全用于二進(jìn)制文件) fclose():關(guān)閉一個打開文件 flock():?鎖定或釋放文件
(3)排序 sort(),根據(jù)數(shù)組中元素的值,以英文字母順序排序,索引鍵會由?0?到?n-1?重新編號。主要是當(dāng)數(shù)組索引鍵的值無關(guān)緊要時用來把數(shù)組排序。 asort(),對數(shù)組value進(jìn)行排序,數(shù)組的索引保持和單元的關(guān)聯(lián)。主要用于對那些單元順序很重要的結(jié)合數(shù)組進(jìn)行排序。 ksort(),根據(jù)數(shù)組中索引鍵的值,以英文字母順序排序,特別適合用于希望把索引鍵排序的關(guān)聯(lián)數(shù)組。
17.模板引擎 smarty是一個模板引擎,使用smarty主要是為了實現(xiàn)邏輯和外在內(nèi)容的分離,如果不使用模板的話,通常的做法就是php代碼和html代碼混編。使用了模板之后,則可以將業(yè)務(wù)邏輯都放到php文件中,而負(fù)責(zé)顯示內(nèi)容的模板則放到html文件中。
18.PHP的垃圾回收機制 PHP可以自動進(jìn)行內(nèi)存管理,清除不再需要的對象。 PHP使用了引用計數(shù)(reference?counting)這種單純的垃圾回收(garbage?collection)機制。每個對象都內(nèi)含一個引用計數(shù)器,每個reference連接到對象,計數(shù)器加1。當(dāng)reference離開生存空間或被設(shè)為NULL,計數(shù)器減1。當(dāng)某個對象的引用計數(shù)器為零時,PHP知道你將不再需要使用這個對象,釋放其所占的內(nèi)存空間。
19.引用計數(shù)
20.php?中傳值與傳引用 變量默認(rèn)總是傳值賦值。 那也就是說,當(dāng)將一個表達(dá)式的值賦予一個變量時,整個原始表達(dá)式的值被賦值到目標(biāo)變量。這意味著,例如,當(dāng)一個變量的值賦予另外一個變量時,改變其中一個變量的值,將不會影響到另外一個變量。 PHP?也提供了另外一種方式給變量賦值:引用賦值。 這意味著新的變量簡單的引用(換言之,“成為其別名”?或者?“指向”)了原始變量。改動新的變量將影響到原始變量,反之亦然。使用引用賦值,簡單地將一個&符號加到將要賦值的變量前(源變量)。 對象默認(rèn)是傳引用。 對于較大的數(shù)據(jù),傳引用比較好,這樣可以節(jié)省內(nèi)存的開銷。
21.常量 常量類似變量,但是常量一旦被定義就無法更改或撤銷定義。 注釋:與變量不同,常量貫穿整個腳本是自動全局的。 設(shè)置常量:define()?函數(shù)?const關(guān)鍵字? Const可在類中使用,define不能
22.發(fā)送http請求函數(shù) (1)curl $ch?=?curl_init();??//初始化?cURL?會話 curl_setopt();?//設(shè)置?cURL?傳輸選項 curl_exec($ch);?//執(zhí)行?cURL?會話 curl_close($ch);?//關(guān)閉?cURL?會話
(2)socket gethostbyname() ?//返回IP 網(wǎng)址 fsockopen() //打開一個網(wǎng)絡(luò)連接或者一個Unix套接字連接 fputs() //寫入文件 feof() ?//?檢測是否已到達(dá)文件末尾 fgets()?//從文件指針中讀取一行。 fclose() //關(guān)閉一個打開文件
(3)stream stream_context_create() //創(chuàng)建資源流上下文 file_get_contents() //把整個文件一次性讀入一個字符串中
23.php中require,include,use區(qū)分
24.合并數(shù)組+與array_merge的區(qū)別 1)鍵名為數(shù)字時,array_merge()不會覆蓋掉原來的值,但+合并數(shù)組則會把最先出現(xiàn)的值作為最終結(jié)果返回,而把后面的數(shù)組擁有相同鍵名的那些值“拋棄”掉(不是覆蓋)?
2.靜態(tài)變量 靜態(tài)變量本身就是靜態(tài)存儲方式,?全局變量也是,局部變量不是 靜態(tài)存儲方式是指在程序運行期間分配固定的存儲空間,靜態(tài)存儲變量通常是在變量定義時就分定存儲單元并一直保持不變,直至整個程序結(jié)束。 動態(tài)存儲變量是在程序執(zhí)行過程中,使用它時才分配存儲單元,使用完畢立即釋放。 當(dāng)一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。?而靜態(tài)全局變量則限制了其作用域,?即只在定義該變量的源文件內(nèi)有效全局變量作用于整個源程序
3.共享鎖,排它鎖的區(qū)別 共享鎖【S鎖】【讀鎖】 又稱讀鎖,若事務(wù)T對數(shù)據(jù)對象A加上S鎖,則事務(wù)T可以讀A但不能修改A,其他事務(wù)只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這保證了其他事務(wù)可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。 排他鎖【X鎖】【寫鎖。】 又稱寫鎖。若事務(wù)T對數(shù)據(jù)對象A加上X鎖,事務(wù)T可以讀A也可以修改A,其他事務(wù)不能再對A加任何鎖,直到T釋放A上的鎖。這保證了其他事務(wù)在T釋放A上的鎖之前不能再讀取和修改A。
4.加密方法 對稱加密和非對稱加密 非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey) 非對稱加密算法強度復(fù)雜、安全性依賴于算法與密鑰但是由于其算法復(fù)雜,而使得加密解密速度沒有對稱加密解密的速度快 對稱加密雙方使用相同鑰匙,安全性得不到保證 對稱加密算法公開、計算量小、加密速度快、加密效率高、可逆
MD5加密,根據(jù)輸出值,不能得到原始的明文,即其過程不可逆,任意長度的數(shù)據(jù),算出的MD5值長度都是固定的。 php?md5($str)??輸出值為32位,?MD5?也可以加鹽之后再加密
Base64加密方式(可逆)?php?base64_encode($str)?base64_decode($str) AES加密(對稱加密) RSA加密(非對稱加密)
5.操作數(shù)組,字符串的方法 數(shù)組:? array()?count?sort?asort?ksort??is_array?in_array?foreach? array_push():將一個或多個元素插入數(shù)組的末尾(入棧)。 array_pop():刪除數(shù)組的最后一個元素(出棧)。 array_shift():刪除數(shù)組中首個元素,并返回被刪除元素的值。 array_unshift():在數(shù)組開頭插入一個或多個元素。 range():創(chuàng)建包含指定范圍單元的數(shù)組。 shuffle():將數(shù)組打亂。 array_reverse()?:?返回一個單元順序相反的數(shù)組 list():?將數(shù)組中元素的值賦值給變量,批量聲明變量 array_merge():?合并一個或多個數(shù)組 array_key():返回數(shù)組中所有的鍵名 array_values():返回數(shù)組中所有的值
字符串: strlen?explode?strpos?substr?md5? strrev:?反轉(zhuǎn)字符串 chunk_split:把字符串分割為一連串更小的部分 trim():去除字符串首尾處的空白字符(或者其他字符) str_replace:以其他字符替換字符串中的一些字符 ucfirst:?將字符串第一個字符改大寫 substr_count:計算子串在字符串中出現(xiàn)的次數(shù) str_replace:?替換字符串函數(shù) strstr():查找字符串的首次出現(xiàn)位置,返回?第一次出現(xiàn)的位置開始到結(jié)尾的字符串 addslashes():?轉(zhuǎn)義字符串 htmlspecialchars():?HTML?實體轉(zhuǎn)義
6.魔術(shù)方法 __get():讀取不可訪問屬性的值 __set():在給不可訪問屬性賦值 __isset()?:當(dāng)對不可訪問屬性調(diào)用?isset()?或?empty() __unset():當(dāng)對不可訪問屬性調(diào)用?unset()? __construct():具有構(gòu)造函數(shù)的類會在每次創(chuàng)建新對象時先調(diào)用此方法 __destruct():?析構(gòu)函數(shù)會在到某個對象的所有引用都被刪除或者當(dāng)對象被顯式銷毀時執(zhí)行。 __call():在對象中調(diào)用一個不可訪問方法 __callStatic():?在靜態(tài)上下文中調(diào)用一個不可訪問方法時 _toString():?用于一個類被當(dāng)成字符串時應(yīng)怎樣回應(yīng)
7.@是為了抑制錯誤顯示 讓用戶看不到,提升用戶體驗。注意:只是抑制錯誤,但是錯誤還是存在的,還會拋出異常。
8.debug_backtrace()? 函數(shù)生成?backtrace(回溯跟 蹤),函數(shù)棧信息 返回一個數(shù)組: Array?(?????[0]?=>?Array?(?????????[file]?=>?C:\webfolder\test.php?????????[line]?=>?6?????????[function]?=>?c?????????[args]?=>?Array?(?????????????[0]?=>?Cleveland?????????)?????)?????[1]?=>?Array?(?????????[file]?=>?C:\webfolder\test.php?????????[line]?=>?3?????????[function]?=>?b?????????[args]?=>?Array?(?????????????[0]?=>?Glenn?????????)?????)?????[2]?=>?Array?(?????????[file]?=>?C:\webfolder\test.php?????????[line]?=>?11?????????[function]?=>?a?????????[args]?=>?Array?(?????????????[0]?=>?Peter?????????)?????)?)
9.魔術(shù)常量
10.PHP三種訪問修飾符 在PHP5中如果類沒有指定成員的訪問修飾符,默認(rèn)就是public的訪問權(quán)限。 ?public(公共的、默認(rèn))?能在程序的任意地方引用,類內(nèi)類外都可以引用, ?protected(受保護(hù)的)?聲明的類內(nèi)能用,繼承類能引用 ?private(私有的)只能在聲明的類里引用
11.參數(shù)傳遞
12.global?$GLOBALS global?關(guān)鍵詞用于在函數(shù)內(nèi)訪問全局變量。 $GLOBALS[index]?的數(shù)組中存儲了所有的全局變量。下標(biāo)存有變量名。這個數(shù)組在函數(shù)內(nèi)也可以訪問,并能夠用于直接更新全局變量。 在?PHP?中,作用域是不重疊的,函數(shù)之外的是全局變量,函數(shù)內(nèi)部定義的則是局部變量
13.數(shù)組排序
14.解析url (1.)parse_url?:?解析?URL?字符串。 返回一個數(shù)組{ ??"scheme"????協(xié)議名 ??"host"????域名 ??"port"??端口號 ??"path"?路徑??????????例:?"/path/login.php" ?"query"??請求參數(shù)??例?:?"arg=value&a=b" } (2.)利用$_SERVER內(nèi)置數(shù)組變量 QUERY_STRING:?查詢字符串??例?:?"arg=value&a=b" HTTP_HOST:?當(dāng)前請求頭中?Host:?項的內(nèi)容 REQUEST_URI:?URI?用來指定要訪問的頁面。例如?“/index.html”。 (3.)利用pathinfo內(nèi)置函數(shù) $test?=?pathinfo("http://localhost:8080/path/index.php?a=b&c=d"); Array ( ????[dirname]?=>?http://localhost:8080/path ????[basename]?=>?index.php?a=b&c=d ????[extension]?=>?php?a=b&c=d ????[filename]?=>?index ) (4.)利用basename內(nèi)置函數(shù) $test?=?basename("http://localhost/path/index.php?name=tank&sex=1#top"); 結(jié)果如下 index.php?name=tank&sex=1#top
15.超全局變量 超全局變量是在全部作用域中始終可用的內(nèi)置變量,這意味著它們在一個腳本的全部作用域中都可用。在函數(shù)或方法中無需執(zhí)行?global?$variable;?就可以訪問它們。
$GLOBALS?—?引用全局作用域中可用的全部變量 $_SERVER?—?服務(wù)器和執(zhí)行環(huán)境信息 $_GET?—?HTTP?GET?變量 $_POST?—?HTTP?POST?變量 $_FILES?—?HTTP?文件上傳變量 $_REQUEST?—?HTTP?Request?變量,?默認(rèn)情況下包含了?$_GET,$_POST?和?$_COOKIE?的數(shù)組 $_SESSION?—?Session?變量 $_ENV?—?環(huán)境變量 $_COOKIE?—?HTTP?Cookies
16.函數(shù) 函數(shù)名是大小寫無關(guān)的
(1)目錄: is_dir():?判斷路徑是否是目錄 mkdir():創(chuàng)建目錄 opendir()?:打開目錄句柄 readdir():返回目錄中下一個文件的文件名 closedir():關(guān)閉目錄句柄
(2)文件 file_exists()?判斷文件是否存在 file_put_contents()?函數(shù)把一個字符串寫入文件中。與依次調(diào)用?fopen(),fwrite()?以及?fclose()?功能一樣。 file_get_contents()?把文件內(nèi)容?或者?url返回的內(nèi)容?全部讀入字符串? 注:請求url可能存在超時的現(xiàn)象,如果php-fpg設(shè)置的是無超時時間,進(jìn)而可能導(dǎo)致php-fpm進(jìn)程一直占用,?阻塞請求處理,返回大量502 fopen():打開文件或者?URL fwrite():函數(shù)寫入文件(可安全用于二進(jìn)制文件) fclose():關(guān)閉一個打開文件 flock():?鎖定或釋放文件
(3)排序 sort(),根據(jù)數(shù)組中元素的值,以英文字母順序排序,索引鍵會由?0?到?n-1?重新編號。主要是當(dāng)數(shù)組索引鍵的值無關(guān)緊要時用來把數(shù)組排序。 asort(),對數(shù)組value進(jìn)行排序,數(shù)組的索引保持和單元的關(guān)聯(lián)。主要用于對那些單元順序很重要的結(jié)合數(shù)組進(jìn)行排序。 ksort(),根據(jù)數(shù)組中索引鍵的值,以英文字母順序排序,特別適合用于希望把索引鍵排序的關(guān)聯(lián)數(shù)組。
17.模板引擎 smarty是一個模板引擎,使用smarty主要是為了實現(xiàn)邏輯和外在內(nèi)容的分離,如果不使用模板的話,通常的做法就是php代碼和html代碼混編。使用了模板之后,則可以將業(yè)務(wù)邏輯都放到php文件中,而負(fù)責(zé)顯示內(nèi)容的模板則放到html文件中。
18.PHP的垃圾回收機制 PHP可以自動進(jìn)行內(nèi)存管理,清除不再需要的對象。 PHP使用了引用計數(shù)(reference?counting)這種單純的垃圾回收(garbage?collection)機制。每個對象都內(nèi)含一個引用計數(shù)器,每個reference連接到對象,計數(shù)器加1。當(dāng)reference離開生存空間或被設(shè)為NULL,計數(shù)器減1。當(dāng)某個對象的引用計數(shù)器為零時,PHP知道你將不再需要使用這個對象,釋放其所占的內(nèi)存空間。
19.引用計數(shù)
20.php?中傳值與傳引用 變量默認(rèn)總是傳值賦值。 那也就是說,當(dāng)將一個表達(dá)式的值賦予一個變量時,整個原始表達(dá)式的值被賦值到目標(biāo)變量。這意味著,例如,當(dāng)一個變量的值賦予另外一個變量時,改變其中一個變量的值,將不會影響到另外一個變量。 PHP?也提供了另外一種方式給變量賦值:引用賦值。 這意味著新的變量簡單的引用(換言之,“成為其別名”?或者?“指向”)了原始變量。改動新的變量將影響到原始變量,反之亦然。使用引用賦值,簡單地將一個&符號加到將要賦值的變量前(源變量)。 對象默認(rèn)是傳引用。 對于較大的數(shù)據(jù),傳引用比較好,這樣可以節(jié)省內(nèi)存的開銷。
21.常量 常量類似變量,但是常量一旦被定義就無法更改或撤銷定義。 注釋:與變量不同,常量貫穿整個腳本是自動全局的。 設(shè)置常量:define()?函數(shù)?const關(guān)鍵字? Const可在類中使用,define不能
22.發(fā)送http請求函數(shù) (1)curl $ch?=?curl_init();??//初始化?cURL?會話 curl_setopt();?//設(shè)置?cURL?傳輸選項 curl_exec($ch);?//執(zhí)行?cURL?會話 curl_close($ch);?//關(guān)閉?cURL?會話
(2)socket gethostbyname() ?//返回IP 網(wǎng)址 fsockopen() //打開一個網(wǎng)絡(luò)連接或者一個Unix套接字連接 fputs() //寫入文件 feof() ?//?檢測是否已到達(dá)文件末尾 fgets()?//從文件指針中讀取一行。 fclose() //關(guān)閉一個打開文件
(3)stream stream_context_create() //創(chuàng)建資源流上下文 file_get_contents() //把整個文件一次性讀入一個字符串中
23.php中require,include,use區(qū)分
24.合并數(shù)組+與array_merge的區(qū)別 1)鍵名為數(shù)字時,array_merge()不會覆蓋掉原來的值,但+合并數(shù)組則會把最先出現(xiàn)的值作為最終結(jié)果返回,而把后面的數(shù)組擁有相同鍵名的那些值“拋棄”掉(不是覆蓋)?
總結(jié)
- 上一篇: nginx常见面试题
- 下一篇: git常见面试题