摘要:是語句不是函數(shù),有返回值,只能輸出一個(gè)變量,不需要圓括號。這些特性使成為理想的數(shù)據(jù)交換語言。如果子類中定義了構(gòu)造函數(shù)則不會(huì)隱式調(diào)用其父類的構(gòu)造函數(shù)。要執(zhí)行父類的構(gòu)造函數(shù),需要在子類的構(gòu)造函數(shù)中調(diào)用。
PHP HTTP Keep-Alive的作用 作用
Keep-Alive:使客戶端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對服務(wù)器的后繼請求時(shí),Keep-Alive功能避免了建立或者重新建立連接。Web服務(wù)器,基本上都支持HTTP Keep-Alive。
缺點(diǎn)對于提供靜態(tài)內(nèi)容的網(wǎng)站來說,這個(gè)功能通常很有用。但是,對于負(fù)擔(dān)較重的網(wǎng)站來說,雖然為客戶保留打開的連 接有一定的好處,但它同樣影響了性能,因?yàn)樵谔幚頃和F陂g,本來可以釋放的資源仍舊被占用。當(dāng)Web服務(wù)器和應(yīng)用服務(wù)器在同一臺(tái)機(jī)器上運(yùn)行時(shí),Keep-Alive功能對資源利用的影響尤其突出。
解決Keep-Alive: timeout=5, max=100
timeout:過期時(shí)間5秒(對應(yīng)httpd.conf里的參數(shù)是:KeepAliveTimeout),
max:是最多一百次請求,強(qiáng)制斷掉連接。就是在timeout時(shí)間內(nèi)又有新的連接過來,同時(shí)max會(huì)自動(dòng)減1,直到為0,強(qiáng)制斷掉。
php數(shù)組函數(shù)常見的那些? 數(shù)組遍歷函數(shù)list(); //不是真正的函數(shù),而是PHP的語言結(jié)構(gòu),用于給一組變量賦值,僅能用于索引數(shù)組 each(); //返回?cái)?shù)組當(dāng)前元素的鍵值對,并將指針移動(dòng)到下一個(gè)元素位置 while(); //可配合list或each使用:while(list($key, $value) = each($arr)){each $key, $value; }數(shù)組內(nèi)部指針控制
current(); //讀取指針位置的內(nèi)容 key(); //讀取當(dāng)前指針指向內(nèi)容的索引值 next(); //將數(shù)組中的內(nèi)部指針指向下一單元 prev(); //將數(shù)組內(nèi)部指針倒回一位 end(); //將數(shù)組內(nèi)部指針指向最后一個(gè)元素 reset(); //將目前指針指向第一個(gè)索引位置數(shù)組鍵值操作函數(shù)
array_values($arr); //獲得數(shù)組的值 array_keys($arr); //獲得數(shù)組的鍵名 array_flip($arr); //數(shù)組中的值與鍵名互換(如果有重復(fù)前面的會(huì)被后面的覆蓋) array_search("PHP",$arr); //檢索給定的值,加true則是嚴(yán)格類型檢查 array_reverse($arr); //將數(shù)組中的元素翻轉(zhuǎn)(前后順序) in_array("apple", $arr); //在數(shù)組中檢索apple array_key_exists("apple", $arr); // 檢索給定的鍵名是否存在數(shù)組中 array_count_values($arr); // 統(tǒng)計(jì)數(shù)組中所有值出現(xiàn)的次數(shù) array_unique($arr); // 刪除數(shù)組中重復(fù)的值數(shù)組回調(diào)函數(shù)
array_filter(); //使用回調(diào)函數(shù)過濾數(shù)組中的元素,如果回調(diào)返回true則當(dāng)前的元素被包含到返回?cái)?shù)組中 array_walk(); //回調(diào)函數(shù)處理數(shù)組,自定義函數(shù)要有兩個(gè)參數(shù),本函數(shù)第三個(gè)參數(shù)可以作為回調(diào)第三個(gè)參數(shù)返回 array_map(); //可以處理多個(gè)數(shù)組,每個(gè)數(shù)組的長度應(yīng)該相同,傳入數(shù)組的個(gè)數(shù)和回調(diào)函數(shù)參數(shù)個(gè)數(shù)應(yīng)該一致數(shù)組的分段和填充
array_slice($arr, 0, 3); //將數(shù)組中的一段取出,此函數(shù)忽略鍵名(數(shù)組的分段) array_splice($arr, 0, 3,array("black","maroon")); //將數(shù)組中的一段取出,返回的序列從原數(shù)組中刪除 array_chunk($arr, 3, TRUE); //將一個(gè)數(shù)組分割成多個(gè),TRUE為保留原數(shù)組的鍵名(分割多個(gè)數(shù)組)數(shù)組與棧,列隊(duì)
array_push($arr, "apple", "pear"); //將一個(gè)或多個(gè)元素壓入數(shù)組棧的末尾(入棧),返回入棧元素的個(gè)數(shù) array_pop($arr); // 將數(shù)組棧的最后一個(gè)元素彈出(出棧) array_shift($arr); //數(shù)組中第一個(gè)元素移出并返回(長度減1,其他元素向前移動(dòng)一位,數(shù)字鍵名改為從零計(jì)數(shù),文字鍵名不變) array_unshift($arr,"a",array(1,2)); //在數(shù)組的開頭插入一個(gè)或多個(gè)元素數(shù)組的排序
sort($arr); //由小到大,忽略鍵名 rsort($arr); //由大到小,忽略鍵名 asort($arr); //由小到大,保留鍵名 arsort($arr); //由大到小,保留鍵名 ksort($arr); //按照鍵名正序排序 krsort($arr); //按照鍵名逆序排序數(shù)組的計(jì)算
array_sum($arr); //對數(shù)組內(nèi)部的所有元素做求和運(yùn)算(數(shù)組元素的求和) array_merge($arr1, $arr2); //合并兩個(gè)或多個(gè)(相同字符串鍵名,后面覆蓋前面,相同的數(shù)字鍵名,后面的附加到后面) array_diff($arr1, $arr2); //返回差集結(jié)果數(shù)組 array_diff_assoc($arr1, $arr2, $arr3); //返回差集結(jié)果數(shù)組,鍵名也做比較 array_intersect($arr1, $arr2); //返回交集結(jié)果數(shù)組 array_intersect_assoc($arr1, $arr2); //返回交集結(jié)果數(shù)組,鍵名也做比較其他的數(shù)組函數(shù)
array_unique($arr); //移除數(shù)組中重復(fù)的值,新的數(shù)組中會(huì)保留原始的鍵名 shuffle($arr); // 將數(shù)組的順序打亂PHP中幾個(gè)輸出函數(shù)echo,print(),print_r(),sprintf(),var_dump()的區(qū)別
echo:是語句不是函數(shù),沒有返回值,可輸出多個(gè)變量值,不需要圓括號。不能輸出數(shù)組和對象,只能打印簡單類型(如int,string)。
print:是語句不是函數(shù),有返回值 1 ,只能輸出一個(gè)變量,不需要圓括號。不能輸出數(shù)組和對象,只能打印簡單類型(如int,string)。
print_r:是函數(shù),可以打印復(fù)合類型,例如:stirng、int、float、array、object等,輸出array時(shí)會(huì)用結(jié)構(gòu)表示,而且可以通過print_r($str,true)來使print_r不輸出而返回print_r處理后的值
printf:是函數(shù),把文字格式化以后輸出(參看C語言)
sprintf:是函數(shù),跟printf相似,但不打印,而是返回格式化后的文字(該函數(shù)把格式化的字符串寫寫入一個(gè)變量中,而不是輸出來),其他的與printf一樣。
$str = "Hello"; $number = 123; $txt = sprintf("%s world. Day number %u",$str,$number); //輸出: Hello world. Day number 123 var_dump():函數(shù),輸出變量的內(nèi)容、類型或字符串的內(nèi)容、類型、長度。常用來調(diào)試。
可以通過function_exists("函數(shù)名稱")進(jìn)行測試
var_dump(function_exists("print")); //bool(false) var_dump(function_exists("echo")); //bool(false) var_dump(function_exists("print_r")); //bool(trueheredoc
Heredoc在正規(guī)的PHP文檔中和技術(shù)書籍中一般沒有詳細(xì)講述。他是一種Perl風(fēng)格的字符串輸出技術(shù)。使用heredoc技術(shù)可以實(shí)現(xiàn)界面與代碼的準(zhǔn)分離,比如phpwind模板。
heredoc的語法是用”<<<”加上自己定義成對的標(biāo)簽,在標(biāo)簽范圍內(nèi)的文字視為一個(gè)字符串
以<<
位于開始標(biāo)記和結(jié)束標(biāo)記之間的變量可以被正常解析,但是函數(shù)則不可以。在heredoc中,變量不需要用連接符 . 或 , 來拼接,比如:
$a=2; $b= <<heredoc常用在輸出包含大量HTML語法文檔的時(shí)候。他要比傳統(tǒng)的echo輸出精煉很多,如下所示:
function getHtml(){ echo ""; echo "Title "; echo "Content"; echo ""; } function getHtml(){ echo <<Title Content