Php面試寶典100題匯總_第1頁
Php面試寶典100題匯總_第2頁
Php面試寶典100題匯總_第3頁
Php面試寶典100題匯總_第4頁
Php面試寶典100題匯總_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Php面試100題匯總1,Http和Https的區(qū)別第一:http是超文本傳輸協(xié)議,信息是明文傳輸,https是具有安全性的ssl加密傳輸協(xié)議第二:http和https使用的是完全不同的連接方式,端口也不一樣,前者80或者443第三:http連接很簡(jiǎn)單,是無狀態(tài)的。https協(xié)議是由ssl+http協(xié)議構(gòu)建的可進(jìn)行加密傳輸,身份認(rèn)證的網(wǎng)絡(luò)協(xié)議。2.什么方法來加快頁面的加載速度1,用到服務(wù)器資源時(shí)在打開,不用時(shí),立即關(guān)閉服務(wù)器資源。2,數(shù)據(jù)庫(kù)添加索引3,頁面可生成靜態(tài)4,圖片等大文件單獨(dú)放在一個(gè)服務(wù)器5,能不查詢數(shù)據(jù)庫(kù)的盡量不去數(shù)據(jù)取數(shù)據(jù),可以放在緩存中。3.表單中g(shù)et與post提交方法的區(qū)別?答:get是發(fā)送請(qǐng)求HTTP協(xié)議通過url參數(shù)傳遞進(jìn)行接收,而post是實(shí)體數(shù)據(jù),可以通過表單提交大量信息.4.echo,print,print_r

的區(qū)別:echo

是php語句,無返回值。print,print_r是函數(shù),有返回值。

print()

只能打印出簡(jiǎn)單類型變量的值(如int,string)

print_r()可以打印出復(fù)雜類型變量的值(如數(shù)組,對(duì)象)

echo

輸出一個(gè)或者多個(gè)字符串5.session與cookie區(qū)別session與cookie相同:跨頁面、不跨用戶session與cookie不相同:1、session可以存儲(chǔ)任意類型的數(shù)據(jù),但cookie只能存儲(chǔ)字符串2、cookie產(chǎn)生在服務(wù)器端、存儲(chǔ)在客戶端session產(chǎn)生在服務(wù)器端、存儲(chǔ)在服務(wù)器端6.魔術(shù)常量答案:__LINE__文件中的當(dāng)前行號(hào)。__FILE__文件的完整路徑和文件名。__FUNCTION__函數(shù)名稱__CLASS__類的名稱__METHOD__類的方法名7.數(shù)據(jù)庫(kù)中的事務(wù)是什么?

答:事務(wù)(transaction)是作為一個(gè)單元的一組有序的數(shù)據(jù)庫(kù)操作。如果組中的所有操作都成功,則認(rèn)為事務(wù)成功,即使只有一個(gè)操作失敗,事務(wù)也不成功。如果所有操作完成,事務(wù)則提交,其修改將作用于所有其他數(shù)據(jù)庫(kù)進(jìn)程。如果一個(gè)操作失敗,則事務(wù)將回滾,該事務(wù)所有操作的影響都將取消。8.1優(yōu)化MYSQL數(shù)據(jù)庫(kù)的方法。

1、選擇合適的字段的數(shù)據(jù)類型1)能用數(shù)字不用字符串2)char、varchar、text能用varchar不用char3)給字段加notnull避免在表中出現(xiàn)NULL關(guān)鍵字(default值)2、選擇合適的字段充當(dāng)主鍵1)建議每張表必須有主鍵2)用數(shù)字類型的字段充當(dāng)主鍵拆分表拆分字段,將文章的標(biāo)題與內(nèi)容分開2)拆分記錄,將今年的記錄與往年的記錄分開給字段合理添加索引a.格式:(普通索引)->創(chuàng)建:CREATEINDEX<索引名>ONtablename(索引字段)修改:ALTERTABLEtablenameADDINDEX[索引名](索引字段)創(chuàng)表指定索引:CREATETABLEtablename([...],INDEX[索引名](索引字段))(唯一索引)->創(chuàng)建:CREATEUNIQUE<索引名>ONtablename(索引字段)修改:ALTERTABLEtablenameADDUNIQUE[索引名](索引字段)創(chuàng)表指定索引:CREATETABLEtablename([...],UNIQUE[索引名](索引字段))(主鍵)->它是唯一索引,一般在創(chuàng)建表是建立,格式為:CREATATABLEtablename([...],PRIMARYKEY[索引字段])5、事務(wù)處理:a.保證數(shù)據(jù)完整性,例如添加和修改同時(shí),兩者成立則都執(zhí)行,一者失敗都失敗mysql_query("BEGIN");mysql_query("INSERTINTOcustomerinfo(name)VALUES('$name1')";mysql_query("SELECT*FROM`orderinfo`wherecustomerid=".$id");mysql_query("COMMIT");6、鎖定表,優(yōu)化事務(wù)處理:a.我們用一個(gè)SELECT語句取出初始數(shù)據(jù),通過一些計(jì)算,用UPDATE語句將新值更新到表中。包含有WRITE關(guān)鍵字的LOCKTABLE語句可以保證在UNLOCKTABLES命令被執(zhí)行之前,不會(huì)有其它的訪問來對(duì)inventory進(jìn)行插入、更新或者刪除的操作mysql_query("LOCKTABLEcustomerinfoREAD,orderinfoWRITE");mysql_query("SELECTcustomeridFROM`customerinfo`whereid=".$id);mysql_query("UPDATE`orderinfo`SETordertitle='$title'wherecustomerid=".$id);mysql_query("UNLOCKTABLES");7、使用外鍵,優(yōu)化鎖定表a.把customerinfo里的customerid映射到orderinfo里的customerid,任何一條沒有合法的customerid的記錄不會(huì)寫到orderinfo里CREATETABLEcustomerinfo(customeridINTNOTNULL,PRIMARYKEY(customerid))TYPE=INNODB;CREATETABLEorderinfo(orderidINTNOTNULL,customeridINTNOTNULL,PRIMARYKEY(customerid,orderid),FOREIGNKEY(customerid)REFERENCEScustomerinfo(customerid)ONDELETECASCADE)TYPE=INNODB;注意:'ONDELETECASCADE',該參數(shù)保證當(dāng)customerinfo表中的一條記錄刪除的話同時(shí)也會(huì)刪除order 表中的該用戶的所有記錄,注意使用外鍵要定義事務(wù)安全類型為INNODB;8、優(yōu)化查詢語句a用內(nèi)連接代替子查詢代替子查詢,用sphinx代替like模糊查詢b最好在相同字段進(jìn)行比較操作,在建立好的索引字段上盡量減少函數(shù)操作例子1:SELECT*FROMorderWHEREYEAR(orderDate)<2008;(慢)SELECT*FROMorderWHEREorderDate<"2008-01-01";(快)例子2:SELECT*FROMorderWHEREaddtime/7<24;(慢)SELECT*FROMorderWHEREaddtime<24*7;(快)例子3:SELECT*FROMorderWHEREtitlelike"%good%";SELECT*FROMorderWHEREtitle>="good"andname<"good";緩存,靜態(tài)化選擇合適存儲(chǔ)引擎用Innodb增刪改,用myisam查詢主從數(shù)據(jù)庫(kù)負(fù)載均衡最好拿數(shù)字類型的字段充當(dāng)where條件最好拿相同類型的字段進(jìn)行比對(duì)(避免發(fā)生數(shù)據(jù)類型的轉(zhuǎn)換)不要在具有索引的字段上添加數(shù)據(jù)庫(kù)函數(shù)(索引失效)8.2請(qǐng)簡(jiǎn)述項(xiàng)目中優(yōu)化sql語句執(zhí)行效率的方法,從哪些方面,sql語句性能如何分析?答:(1)選擇最有效率的表名順序(2)WHERE子句中的連接順序(3)SELECT子句中避免使用‘*’(4)用Where子句替換HAVING子句(5)通過內(nèi)部函數(shù)提高SQL效率(6)避免在索引列上使用計(jì)算。(7)提高GROUPBY語句的效率,可以通過將不需要的記錄在GROUPBY之前過濾掉。9.對(duì)于大流量網(wǎng)站,采用什么方法解決訪問量問題?1,確認(rèn)服務(wù)器的硬件是否足夠支持當(dāng)前的流量2,優(yōu)化數(shù)據(jù)庫(kù)的訪問3,禁止外部的盜鏈4,控制大文件的下載5,使用不同主機(jī)分流主要流量6,使用流量分析統(tǒng)計(jì)軟件10.一個(gè)函數(shù),能夠遍歷一個(gè)文件夾下的所有文件和子文件夾(20分)functiondir_recurse($dir){$i=1;if($handle=opendir($dir)){while(false!==($file=readdir($handle))){if($file!="."&&$file!=".."){if(is_dir($dir."/".$file)==true){$fullpath=$dir."/".$file;dir_recurse($fullpath);echo"$fullpath\n";$i++;}else{$fullpath=$dir."/".$file;echo"$fullpath\n";$i++;}}}closedir($handle);}}10.2寫一個(gè)函數(shù),能夠遍歷一個(gè)文件夾下的所有文件和子文件夾。functionmy_scandir($dir){$files=array();if($handle=opendir($dir)){while(($file=readdir($handle))!==false){if($file!=".."&&$file!="."){if(is_dir($dir."/".$file)){$files[$file]=scandir($dir."/".$file);}else{$files[]=$file;}}}closedir($handle);return$files;}}11、能夠使HTML和PHP分離開使用的模板(1分)答:Smarty,Dwoo,TinyButStrong,TemplateLite,Savant,phemplate,XTemplate12、使用哪些工具進(jìn)行版本控制?(1分)答:cvs,svn,vss;13、如何實(shí)現(xiàn)字符串翻轉(zhuǎn)?(3分)英文:strrev($a)中文或其他文字:中文:GB2312,代碼是使用GB2312編碼<?php functionreverse($str){ $ret=""; len=mbstrwidth(len=mbstrwidth(len=mb_strwidth(str,"GB2312"); for(i=0;i=0;i=0;i<len;len;len;i++) { arr[]=mbsubstr(arr[]=mbsubstr(arr[]=mb_substr(str,$i,1,"GB2312"); } returnimplode("",array_reverse($arr));}print_r(reverse("你好"));14.PHP的意思(送1分)PHP是一個(gè)基于服務(wù)端來創(chuàng)建動(dòng)態(tài)網(wǎng)站的腳本語言,您可以用PHP和HTML生成網(wǎng)站主頁15.MYSQL取得當(dāng)前時(shí)間的函數(shù)是?,格式化日期的函數(shù)是(2分)答:now(),date()16.用PHP寫出顯示客戶端IP與服務(wù)器IP的代碼1分)答:打印客戶端IP:echo$_SERVER[‘REMOTE_ADDR’];或者:getenv('REMOTE_ADDR');打印服務(wù)器IP:echogethostbyname("")17、語句include和require的區(qū)別是什么?為避免多次包含同一文件,可用(?)語句代替它們?答:require->require是無條件包含也就是如果一個(gè)流程里加入require,無論條件成立與否 都會(huì)先執(zhí)行requireinclude->include有返回值,而require沒有(可能因?yàn)槿绱藃equire的速度比include快)注意:包含文件不存在或者語法錯(cuò)誤的時(shí)候require是致命的,include不是18.http請(qǐng)求返回狀態(tài)碼400請(qǐng)求無效401未授權(quán)403請(qǐng)求被禁止404請(qǐng)求資源不存在405請(qǐng)求資源被禁止406無法接受407要求代理身份驗(yàn)證500InternalServerError服務(wù)端源代碼錯(cuò)誤600源站沒有返回響應(yīng)頭部,只返回實(shí)現(xiàn)內(nèi)容19,linux授權(quán)碼:600屬主有讀寫權(quán)限644屬主有讀寫權(quán)限,屬性組有讀權(quán)限700屬主有讀寫執(zhí)行權(quán)限755屬主有讀寫執(zhí)行權(quán)限,屬性組有讀,執(zhí)行權(quán)限711屬主有讀寫執(zhí)行權(quán)限,屬性組有執(zhí)行權(quán)限666所有用戶都有文件的讀寫權(quán)限777所有用戶都有文件的讀寫執(zhí)行權(quán)限20.有一個(gè)網(wǎng)頁地址,比如PHP開發(fā)資源網(wǎng)主頁:/index.html,如何得到它的內(nèi)容?($1分)答:方法1(對(duì)于PHP5及更高版本):$readcontents=fopen("/index.html","rb");$contents=stream_get_contents($readcontents);fclose($readcontents);echo$contents;方法2:echofile_get_contents("/index.html");21.在PHP中error_reporting這個(gè)函數(shù)有什么作用?(1分)答:設(shè)置錯(cuò)誤級(jí)別與錯(cuò)誤信息回報(bào)22.JS表單彈出對(duì)話框函數(shù)是?獲得輸入焦點(diǎn)函數(shù)是?(2分)答:彈出對(duì)話框:alert(),prompt(),confirm()獲得輸入焦點(diǎn)focus()23.foo()和@foo()之間有什么區(qū)別?(1分)答:@foo()控制錯(cuò)誤輸出24、mysql_fetch_row()和mysql_fetch_array之間有什么區(qū)別?(1分)答:mysql_fetch_row是從結(jié)果集取出1行數(shù)組,作為枚舉mysql_fetch_array是從結(jié)果集取出一行數(shù)組作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,兩者兼得25、GD庫(kù)是做什么用的?(1分)答:gd庫(kù)提供了一系列用來處理圖片的API,使用GD庫(kù)可以處理圖片,或者生成圖片。在網(wǎng)站上GD庫(kù)通常用來生成縮略圖或者用來對(duì)圖片加水印或者對(duì)網(wǎng)站數(shù)據(jù)生成報(bào)表。26.面向?qū)ο缶幊逃袃蓚€(gè)重要的概念:類和對(duì)象類是具備某項(xiàng)功能的抽象模型,實(shí)際應(yīng)用中,還需要對(duì)類進(jìn)行實(shí)例化后使用。這樣就引入了對(duì)象的概念。對(duì)象是類進(jìn)行實(shí)例化后的一個(gè)產(chǎn)物,是一個(gè)實(shí)體。封裝:把客觀的事物封裝成一個(gè)抽象的類。繼承:子類繼承父類,可以使用父類的屬性和方法??梢詫?shí)現(xiàn)接口,同時(shí)實(shí)現(xiàn)接口中的所有方法多態(tài):覆蓋和重載子類可以覆蓋父類中的方法;一個(gè)類中可以同時(shí)擁有同一個(gè)函數(shù)名的方法,但是方法的參數(shù)不同,實(shí)現(xiàn)的結(jié)果也不同。27.php框架熟悉YII,Thinkphp還有l(wèi)aravel,symfony2,cakephp28.mysql存儲(chǔ)引擎ISAM: 查詢速度快、增刪改慢,支持全文索引、不支持外鍵、不支持事務(wù)MyISAM: ISAM升級(jí)版Memory: 數(shù)據(jù)駐留在內(nèi)存、速度快、數(shù)據(jù)管理不穩(wěn)定、斷電后數(shù)據(jù)全部丟失InnoDB: 速度較慢、支持外鍵、支持事務(wù)、不支持全文索引使用的存儲(chǔ)引擎MyISAM:內(nèi)容管理系統(tǒng)(新聞、官網(wǎng)、電商、軟件下載、房屋、招聘...)可讀不可改大部分是瀏覽信息InnoDB:技術(shù)型網(wǎng)站(bbs、blog、webo、oa...)29.數(shù)據(jù)庫(kù)操作流程$link=mysql_connect("localhost","root","root");mysql_select_db("test",$link);$sql="select*fromtable";$result=mysql_query($sql);while($row=mysql_fetch_****($result)){

$arr[]=$row;

}$row=mysql_fetch_array($result)

意思:$row['name']和$row[1]都可以取到值$row=mysql_fetch_row($result))意思:$row[1]只有用索引取值,偏移量從0開始。$row=mysql_fetch_assoc($result))意思:$row['name']字段名作為索引取值抽取一條記錄轉(zhuǎn)為關(guān)聯(lián)數(shù)組,失敗返回false30.php加密函數(shù)crypt($str[,$slat])可以完成單向加密功能

md5()sha1()返回一個(gè)40位的十六進(jìn)制數(shù),加密擴(kuò)展庫(kù)Mcrypt()和Mash31、字符串“touppercase”分別用php,shell,js實(shí)現(xiàn)將字符串中的字符全部轉(zhuǎn)換成大寫并輸出。(5分)Php實(shí)現(xiàn):echostrtoupper(‘touppercase’)Shell實(shí)現(xiàn):echo"touppercase"|tr'a-z''A-Z'Js實(shí)現(xiàn):<scriptlanguage="javascript">

varstmp1="touppercase";

alert(stmp1.toLocaleUpperCase());//轉(zhuǎn)換成大寫

alert(stmp1.toUpperCase())//轉(zhuǎn)換成大寫

</script>32.防止SQL注入1)一般使用addslashes函數(shù)addslashes函數(shù)在制定的預(yù)定義字符前添加反斜杠對(duì)字段和密碼MD5加密處理預(yù)處理過濾處理33、用PHP打印出前一天的時(shí)間,格式是2006-5-1022:21:21<?php//echodate('Y-m-dH:i:s',time()-60*60*24echodate("Y:m:dH:i:s",strtotime("-1day"));?>34.如何實(shí)現(xiàn)字符串翻轉(zhuǎn)?其實(shí)PHP本身就有字符串翻轉(zhuǎn)的函數(shù):strrev(),不妨試試echostrrev($str);不過所有的這三種方法都不能解決中文字符串翻轉(zhuǎn)的問題,會(huì)出錯(cuò)的。代碼<?phpfunctionreverse($var){$res="";for($i=0,$j=strlen($var);$i<$j;$i++){$res=$var[$i].$res;}return$res;}$tmpvar="wofang";$res=reverse($tmpvar);echo$res;?>35.實(shí)現(xiàn)中文字串截取無亂碼的方法。mb_substr()36.以下哪一句不會(huì)把John新增到users陣列?$users[]='john';成功把John新增到陣列users。array_add($users,’john’);函式array_add()無定義。array_push($users,‘john’);成功把John新增到陣列users。$users||='john';語法錯(cuò)誤。37.sort()、assort()、和ksort()有什么分別?它們分別在什么情況下使用?sort()根據(jù)陣列中元素的值,以英文字母順序排序,索引鍵會(huì)由0到n-1重新編號(hào)。主要是當(dāng)陣列索引鍵的值無關(guān)疼癢時(shí)用來把陣列排序。assort()PHP沒有assort()函式,所以可能是asort()的筆誤。asort()與sort()一樣把陣列的元素按英文字母順序來排列,不同的是所有索引鍵都獲得保留,特別適合替聯(lián)想陣列排序。ksort()根據(jù)陣列中索引鍵的值,以英文字母順序排序,特別適合用于希望把索引鍵排序的聯(lián)想陣列。38.以下的代碼會(huì)產(chǎn)生什么?為什么?$num=10;functionmultiply(){$num=$num*10;}multiply();echo$num;由于函式multiply()沒有指定$num為全域變量(例如global$num或者$_GLOBALS['num']),所以$num的值是10。39.些函式可以用來在現(xiàn)正執(zhí)行的腳本中插入函式庫(kù)?對(duì)這道題目不同的理解會(huì)有不同的答案,我的第一個(gè)想法是插入PHP函式庫(kù)不外乎include()、include_once()、require()、require_once(),但細(xì)心再想,“函式庫(kù)”也應(yīng)該包括com物件和.net函式庫(kù),所以我們的答案也要分別包括com_load和dotnet_load,下次有人提起“函式庫(kù)”的時(shí)候,別忘記這兩個(gè)函式。40.foo()與@foo()有什么分別?foo()會(huì)執(zhí)行這個(gè)函式,任何解譯錯(cuò)誤、語法錯(cuò)誤、執(zhí)行錯(cuò)誤都會(huì)在頁面上顯示出來。@foo()在執(zhí)行這個(gè)函式時(shí),會(huì)隱藏所有上述的錯(cuò)誤訊息。很多應(yīng)用程式都使用@mysql_connect()和@mysql_query來隱藏mysql的錯(cuò)誤訊息,我認(rèn)為這是很嚴(yán)重的失誤,因?yàn)殄e(cuò)誤不該被隱藏,你必須妥善處理它們,可能的話解決它們?!?==”是什么?試舉一個(gè)“==”是真但“===”是假的例子?!?==”是給既可以送回布爾值“假”,也可以送回一個(gè)不是布爾值但卻可以賦與“假”值的函式,strpos()和strrpos()便是其中兩個(gè)例子。問題的第二部份有點(diǎn)困難,想一個(gè)“==”是假,但是“===”是真的例子卻很容易,相反的例子卻很少。但我終于找到以下的例子:if(strpos("abc","a")==true){//這部分永不會(huì)被執(zhí)行,因?yàn)?a"的位置是0,換算成布爾值“假”}if(strpos("abc","a")===true){//這部份會(huì)被執(zhí)行,因?yàn)椤?==”保證函式strpos()的送回值不會(huì)換算成布爾值.}42、如何修改SESSION的生存時(shí)間(1分).答:方法1:將php.ini中的session.gc_maxlifetime設(shè)置為9999重啟apache方法2:$savePath="./session_save_dir/";$lifeTime=小時(shí)*秒;session_save_path($savePath);session_set_cookie_params($lifeTime);session_start();方法3:setcookie()andsession_set_cookie_params($lifeTime);43、在PHP中,heredoc是一種特殊的字符串,它的結(jié)束標(biāo)志必須?(1分)答:heredoc的語法是用"<<<"加上自己定義成對(duì)的標(biāo)簽,在標(biāo)簽范圍內(nèi)的文字視為一個(gè)字符串例子:$str=<<<SHOWmynameisJiangQihui!SHOW;44.在PHP中error_reporting這個(gè)函數(shù)有什么作用?(1分)答:設(shè)置錯(cuò)誤級(jí)別與錯(cuò)誤信息回報(bào)45.請(qǐng)寫一個(gè)函數(shù)驗(yàn)證電子郵件的格式是否正確(2分)答:functioncheckEmail($email){$pregEmail="/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";returnpreg_match($pregEmail,$email);}46、請(qǐng)寫出數(shù)據(jù)類型(intcharvarchardatetimetext)的意思;請(qǐng)問varchar和char有什么區(qū)別(2分)答:int是數(shù)字類型,char固定長(zhǎng)度字符串,varchar實(shí)際長(zhǎng)度字符串,datetime日期時(shí)間型,text文本字符串char的場(chǎng)地固定為創(chuàng)建表設(shè)置的長(zhǎng)度,varchar為可變長(zhǎng)度的字符47、檢測(cè)一個(gè)變量是否有設(shè)置的函數(shù)是否?是否為空的函數(shù)是?(2分)答:isset($str),empty($str);48、取得查詢結(jié)果集總數(shù)的函數(shù)是?(1分)答:mysql_num_rows($result);49簡(jiǎn)述如何得到當(dāng)前執(zhí)行腳本路徑,包括所得到參數(shù)。<?phpecho"http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];//echo"http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];?>50請(qǐng)舉例說明在你的開發(fā)過程中用什么方法來加快頁面的加載速度要用到服務(wù)器資源時(shí)才打開及時(shí)關(guān)閉服務(wù)器資源,數(shù)據(jù)庫(kù)添加索引,頁面可生成靜態(tài),圖片等大文件單獨(dú)服務(wù)器。使用代碼優(yōu)化工具啦51.給定一個(gè)用逗號(hào)分隔一組值的字符串,以下哪個(gè)函數(shù)能在僅調(diào)用一次的情況下就把每個(gè)獨(dú)立的值放入一個(gè)新創(chuàng)建的數(shù)組?A.strstr()B.不可能只調(diào)用一次就完成C.extract()D.explode()√E.strtok()52.如果用+操作符把一個(gè)字符串和一個(gè)整型數(shù)字相加,結(jié)果將怎樣?A.解釋器輸出一個(gè)類型錯(cuò)誤B.字符串將被轉(zhuǎn)換成數(shù)字,再與整型數(shù)字相加C.字符串將被丟棄,只保留整型數(shù)字√D.字符串和整型數(shù)字將連接成一個(gè)新字符串E.整形數(shù)字將被丟棄,而保留字符串53.以下腳本輸出什么?$s='12345';$s[$s[1]]='2';echo$s;?>A.12345B.12245√C.22345D.1134554.以下腳本輸出什么?$x='apple';echosubstr_replace($x,'x',1,2);?>A.xB.a(chǎn)xle√C.a(chǎn)xxleD.a(chǎn)pplexE.xapple55.函數(shù)______能讀取文本文件中的一行。讀取二進(jìn)制文件或者其他文件時(shí),應(yīng)當(dāng)用______函數(shù)。A.fgets(),fseek()B.fread(),fgets()C.fputs(),fgets()D.fgets(),fread()√E.fread(),fseek()56.哪個(gè)函數(shù)能夠往文本文件中寫入一個(gè)字符串?答案:fwrite()和fputs()兩個(gè)函數(shù)在這里都可以,而后者其實(shí)是前者的別名。在PHP中,寫入二進(jìn)制數(shù)據(jù)和寫入字符串沒有區(qū)別。57.函數(shù)______能判斷一個(gè)文件是否可寫。答案:is_writeable58.以下哪個(gè)選項(xiàng)能將文件指針移到開頭?A.reset()B.fseek(-1)C.fseek(0,SEEK_END)D.fseek(0,SEEK_SET)√E.fseek(0,SEEK_CUR)59、include的功能和require一樣,不同的是,require不能用在[]A、判斷語句或循環(huán)里,B、連接語句里C、聲明語句里D、文件的開頭E、文件的中間√50、下面建立與MySQLServer的連接語法正確的是:[]A、$link=connect("host_name","user_name","password");B、$link=mysql_connect("host_name","user_name","password");√C、$link=mysqlconnect("host_name","user_name","password");D、$link=mysql_pconnect("host_name","user_name","password");√E、$link=pconnect("host_name","user_name","password");51.將字符串轉(zhuǎn)換成小寫strtolower():該函數(shù)將傳入的字符串參數(shù)所有的字符都轉(zhuǎn)換成小寫,并以小定形式放回這個(gè)字符串52.將字符轉(zhuǎn)成大寫strtoupper():該函數(shù)的作用同strtolower函數(shù)相反,是將傳入的字符參數(shù)的字符全部轉(zhuǎn)換成大寫,并以大寫的形式返回這個(gè)字符串.用法同strtolowe()一樣.53.將字符串首字符轉(zhuǎn)換成大寫ucfirst():該函數(shù)的作用是將字符串的第一個(gè)字符改成大寫,該函數(shù)返回首字符大寫的字符串.用法同strtolowe()一樣.54.將字符串每個(gè)單詞的首字符轉(zhuǎn)換成大寫 ucwords():該函數(shù)將傳入的字符串的每個(gè)單詞的首字符變成大寫.如"helloworld",經(jīng)過該函數(shù)處理后,將返回"HelloWord".用法同strtolowe()一樣.55、NoSQL:NotOnlySQL 思想:網(wǎng)站產(chǎn)生的數(shù)據(jù),一部分存儲(chǔ)數(shù)據(jù)庫(kù)、一部分存到NoSQL相關(guān)產(chǎn)品NoSQL產(chǎn)品1、Memcache:內(nèi)存(速度快、數(shù)據(jù)量小)、數(shù)據(jù)的過期時(shí)間2、MongoDB:文檔數(shù)據(jù)庫(kù)3、Redis:內(nèi)存(速度快、數(shù)據(jù)量小)、庫(kù)、沒有過期時(shí)間56.什么樣的數(shù)據(jù),存儲(chǔ)在什么位置?MySQL:穩(wěn)定的數(shù)據(jù)NoSQL:活躍的數(shù)據(jù)57緩存分類1、緩存數(shù)據(jù)存儲(chǔ)位置不同1)文件緩存2)內(nèi)存緩存2、緩存的數(shù)據(jù)量的不同1)頁面緩存2)局部緩存3)局部不緩存4)數(shù)據(jù)緩存(變量緩存、動(dòng)態(tài)緩存)Memcache:內(nèi)存緩存、變量緩存58.LINUX命令查看當(dāng)前目錄下所有內(nèi)容ls在當(dāng)前目錄下,新建一個(gè)文件夾mkdir文件夾名刪除指定的文件夾rmdir文件夾名只能刪除空目錄在當(dāng)前目錄下新建一個(gè)空白文件touch文件名刪除當(dāng)前目錄下的一個(gè)文件unlink文件名刪除文件或文件夾rm復(fù)制文件cp移動(dòng)文件或文件夾mv文件或文件夾重命名 mv查看完整的工作目錄pwd切換目錄:cdcd/返回根目錄文件傳輸ftp查看文件內(nèi)容cat文件名查看文件編碼file文件名查找文件find路徑-name文件名修改文件或文件夾權(quán)限權(quán)限種類:r4(讀)、w2(寫)、x1(執(zhí)行)權(quán)限操作符:+(賦予權(quán)限)、-(收回權(quán)限)用戶種類:a(所有人)、u(文件擁有者)、g(組用戶)、o(其他用戶)查看權(quán)限:ls-l-rw-r--r--a.txtdrwxr-xr-xhello 第1位:是文件還是文件夾(-文件、d文件夾) 第234位:u用戶的權(quán)限第567位:g用戶的權(quán)限最后三位:o用戶的權(quán)限1)將最大權(quán)限賦予a.txtchmoda+r+w+xa.txtchmod777a.txt2)設(shè)置a.txt權(quán)限,收回o用戶的wx權(quán)限chmodo-w-xa.txt4)設(shè)置a.txt權(quán)限:u:rwg:ro:rchmod644a.txt5)設(shè)置hello文件夾權(quán),給予最大權(quán)限(不影響子文件)chmod777hello6)設(shè)置hello文件夾權(quán),給予最大權(quán)限(影響子文件)chmod-R777hello59、創(chuàng)建文件exer1,設(shè)置訪問權(quán)限為rw-r--r--,現(xiàn)要增加所有用戶的執(zhí)行權(quán)限和同組用戶的寫權(quán)限,寫出操作過程的命令(10分)touchexer1chmod644exer1增加權(quán)限chmoda+xexer1chmodg+wexer1或者chmod775exer160易出現(xiàn)編碼的地方文件保存格式的編碼<metahttp-equiv=”content-type”content=”text/html;charset=utf-8”>Header();Msq本身的編碼(修改my.ini)Setnamesgbk;Mysql_query(“setnamesutf8”);Iconv()PHP的系統(tǒng)函數(shù)進(jìn)行轉(zhuǎn)碼61.PHP工作原理一個(gè)網(wǎng)站運(yùn)行時(shí)客戶端有無數(shù)個(gè),服務(wù)器通常只有一個(gè)(負(fù)載均衡)開發(fā)環(huán)境的安裝Apache2.2,PHP5.4,MYSQL5.3-------開源,可以跨平臺(tái)配置文件:httpd.conf(Apache),php.inimy.iniPHP文檔組成:HTML,css,js,jquery,PHPPHP語法風(fēng)格:xml風(fēng)格,短風(fēng)格,ASP風(fēng)格(已過時(shí)),腳本風(fēng)格<?php?>注意:位置任意,同一頁面可以出現(xiàn)多次,不能嵌套,里面只能出現(xiàn)php代碼,需要轉(zhuǎn)字符串輸出運(yùn)行在服務(wù)器端注釋:?jiǎn)涡凶⑨專嘈凶⑨?2數(shù)據(jù)類型:標(biāo)量類型:integer,F(xiàn)loat,String,boolean復(fù)合類型:Array,Object特殊類型:Resource,Null偽類型:mixed,number,callback(回調(diào)函數(shù))63.PHP中被認(rèn)為是false的值:0, 0.0, null, 空數(shù)組, 空字符串, false64.求兩個(gè)日期的差數(shù),例如2012-2-27~2013-05-6的日期差數(shù)<?phpfunctionget_days($date1,$date2){$time1=strtotime($date1);$time2=strtotime($date2);return($time2-$time1)/86400;}echoget_days("2013-05-6","2012-2-27");?>65什么是MVC?回答:MVC由Model(模型),View(視圖)和Controller(控制器)組成,PHPMVC可以更高效地管理好3個(gè)不同層的PHP代碼。Model:數(shù)據(jù)信息存取層。View:view層負(fù)責(zé)將應(yīng)用的數(shù)據(jù)以特定的方式展現(xiàn)在界面上。Controller:通??刂破髫?fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。66.PHP中獲取圖像尺寸大小的方法是什么?回答:getimagesize()獲取圖片的尺寸Imagesx()獲取圖片的寬度Imagesy()獲取圖片的高度67.如何在PHP中定義常量?回答:PHP中使用Define()來定義常量。define(“Newconstant”,30);68.如何不使用submit按鈕來提交表單?如果我們不想用submit按鈕來提交表單,我們也可以用超鏈接來提交,我們可以這樣寫代碼:<ahref=”javascript:document.myform.submit();”>SubmitMe</a>69.簡(jiǎn)述論壇中無限分類的實(shí)現(xiàn)原理。答:無限極分類,那么應(yīng)該是考察遞歸函數(shù)吧!第一步:建立測(cè)試數(shù)據(jù)庫(kù):CREATETABLE`category`(`id`smallint(5)unsignedNOTNULLauto_increment,`fid`smallint(5)unsignedNOTNULLdefault'0',`value`varchar(50)NOTNULLdefault'',PRIMARYKEY(`id`))ENGINE=MyISAMDEFAULTCHARSET=utf8;第二步:插入測(cè)試數(shù)據(jù):INSERTINTO`category`(`fid`,`value`)VALUES(0,'PHP點(diǎn)點(diǎn)通博客PHPDDT.COM'),(1,'a'),(1,'b'),(2,'c'),(2,'d'),(4,'e')第三步:遞歸輸出分類:70.試述isset()和empty()的區(qū)別isset()測(cè)試變量是否存在empty()測(cè)試變量是否為空71.請(qǐng)用盡可能少的語句實(shí)現(xiàn)對(duì)輸入Email地址進(jìn)行驗(yàn)證的功能eregi('^[_a-z0-9]+(/.[_a-z0-9-]+)*@[a-z0-9]+(/.[a-z0-9-]+)*$',$emailaddress)72.使用PHP描述冒泡排序和快速排序算法,對(duì)象可以是一個(gè)數(shù)組/冒泡排序(數(shù)組排序)functionbubble_sort($array){$count=count($array);if($count<=0)returnfalse;for($i=0;$i<$count;$i++){for($j=$count-1;$j>$i;$j–){if($array[$j]<$array[$j-1]){$tmp=$array[$j];$array[$j]=$array[$j-1];$array[$j-1]=$tmp;}}}return$array;}//快速排序(數(shù)組排序)functionquick_sort($array){if(count($array)<=1)return$array;$key=$array[0];$left_arr=array();$right_arr=array();for($i=1;$i<count($array);$i++){if($array[$i]<=$key)$left_arr[]=$array[$i];else$right_arr[]=$array[$i];}$left_arr=quick_sort($left_arr);$right_arr=quick_sort($right_arr);returnarray_merge($left_arr,array($key),$right_arr);}73、使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對(duì)象可以是一個(gè)有序數(shù)組//二分查找(數(shù)組里查找某個(gè)元素)functionbin_sch($array,$low,$high,$k){if($low<=$high){$mid=intval(($low+$high)/2);if($array[$mid]==$k){return$mid;}elseif($k<$array[$mid]){returnbin_sch($array,$low,$mid-1,$k);}else{returnbin_sch($array,$mid+1,$high,$k);}}return-1;}//順序查找(數(shù)組里查找某個(gè)元素)functionseq_sch($array,$n,$k){$array[$n]=$k;for($i=0;$i<$n;$i++){if($array[$i]==$k){break;}}if($i<$n){return$i;}else{return-1;}}74.寫一個(gè)二維數(shù)組排序算法函數(shù),能夠具有通用性,可以調(diào)用php內(nèi)置函數(shù)functionarray_sort($arr,$keys,$order=0){if(!is_array($arr)){returnfalse;}$keysvalue=array();foreach($arras$key=>$val){$keysvalue[$key]=$val[$keys];}if($order==0){asort($keysvalue);}else{arsort($keysvalue);}reset($keysvalue);foreach($keysvalueas$key=>$vals){$keysort[$key]=$key;}$new_array=array();foreach($keysortas$key=>$val){$new_array[$key]=$arr[$val];}return$new_array;}75.utf-8轉(zhuǎn)換成gbk的函數(shù)是?iconv("gbk",""UTF-8,"我們");mb_convert_encoding($str,"GBK","UTF-8")76.Php中分割字符串成數(shù)組的函數(shù)和連接數(shù)組成字符串的函分別有哪些?explode()split();implode()join()77.說幾個(gè)你知道的設(shè)計(jì)模式?單例模式:保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問他的全局訪問點(diǎn)例如框架中的數(shù)據(jù)庫(kù)連接簡(jiǎn)單工廠模式:它具有創(chuàng)建對(duì)象的某些方法,可以使用工廠類創(chuàng)建對(duì)象,而不直接使用new。例如初始化數(shù)據(jù)庫(kù)的時(shí)候會(huì)用到,比如MySQL,MSSQL策略模式:針對(duì)一組算法,將每一個(gè)算法封裝到具有共同接口的獨(dú)立的類中,例如進(jìn)入個(gè)人主頁時(shí),根據(jù)瀏覽者的不同,給予不同的顯示與操作注冊(cè)模式:提供了在程序中有條理的存放并管理一組全局對(duì)象(object),例如ZF框架中的Zend_Registry::set適配器模式:將不同接口適配成統(tǒng)一的API接口,例如數(shù)據(jù)操作有mysql、mysqli、pdo等,可利用適配器模式統(tǒng)一接口觀察者模式:一個(gè)對(duì)象通過添加一個(gè)方法使本身變得可觀察。當(dāng)可觀察的對(duì)象更改時(shí),它會(huì)將消息發(fā)送到已注冊(cè)的觀察者。例如實(shí)現(xiàn)實(shí)現(xiàn)消息推送裝飾器模式:不修改原類代碼和繼承的情況下動(dòng)態(tài)擴(kuò)展類的功能,例如框架的每個(gè)Controller文件會(huì)提供before和after方法迭代器模式:提供一個(gè)方法順序訪問一個(gè)聚合對(duì)象中各個(gè)元素,在PHP中將繼承Iterator類原型模式:實(shí)現(xiàn)了一個(gè)原型接口,該接口用于創(chuàng)建當(dāng)前對(duì)象的克隆。當(dāng)直接創(chuàng)建對(duì)象的代價(jià)比較大時(shí),則采用這種模式。例如,一個(gè)對(duì)象需要在一個(gè)高代價(jià)的數(shù)據(jù)庫(kù)操作之后被創(chuàng)建。78.echo,print(),print_r(),printf(),sprintf(),var_dump()有什么區(qū)別?echo:是語句不是函數(shù),沒有返回值,可輸出多個(gè)變量值,不需要圓括號(hào)。不能輸出數(shù)組和對(duì)象,只能打印簡(jiǎn)單類型(如int,string)print:是語句不是函數(shù),有返回值1,只能輸出一個(gè)變量,不需要圓括號(hào)。不能輸出數(shù)組和對(duì)象,只能打印簡(jiǎn)單類型(如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相似,但不打印,而是返回格式化后的文字,其他的與printf一樣。var_dump:函數(shù),輸出變量的內(nèi)容、類型或字符串的內(nèi)容、類型、長(zhǎng)度。常用來調(diào)試。79.echocount(“abc”);輸出什么?答案:180.寫個(gè)函數(shù)用來對(duì)二維數(shù)組排序。答案:array_multisort()。81.對(duì)于大流量的網(wǎng)站,您采用什么樣的方法來解決訪問量問題?首先,確認(rèn)服務(wù)器硬件是否足夠支持當(dāng)前的流量。其次,優(yōu)化數(shù)據(jù)庫(kù)訪問。第三,禁止外部的盜鏈。第四,控制大文件的下載。第五,使用不同主機(jī)分流主要流量第六,使用流量分析統(tǒng)計(jì)軟件。82.error_reporting(2047)什么作用? 答案:相當(dāng)于error_reporting(‘E_ALL’);輸出所有的錯(cuò)誤。83、簡(jiǎn)述如何得到當(dāng)前執(zhí)行腳本路徑,包括所得到參數(shù)。訪問/phpinfo.php?id=1echo$_SERVER['SCRIPT_URL'];//得到/phpinfo.phpecho$_SERVER["SCRIPT_URI"];//得到/phpinfo.phpecho$_SERVER["SCRIPT_FILENAME"];//得到F:/www/Temp/phpinfo.phpecho$_SERVER["REQUEST_URI"];//得到/phpinfo.php?id=1echo$_SERVER["SCRIPT_NAME"];//得到/phpinfo.php參考server.php/test/server.php?id=184.寫出session的運(yùn)行機(jī)制。session創(chuàng)建時(shí),是否會(huì)在服務(wù)端記錄一個(gè)cookie?cookie里面的內(nèi)容是什么?session機(jī)制是一種服務(wù)器端的機(jī)制,服務(wù)器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來保存信息。當(dāng)程序需要為某個(gè)客戶端的請(qǐng)求創(chuàng)建一個(gè)session的時(shí)候,服務(wù)器首先檢查這個(gè)客戶端的請(qǐng)求里是否已包含了一個(gè)session標(biāo)識(shí)-稱為sessionid,如果已包含一個(gè)sessionid則說明以前已經(jīng)為此客戶端創(chuàng)建過session,服務(wù)器就按照sessionid把這個(gè)session檢索出來使用(如果檢索不到,可能會(huì)新建一個(gè)),如果客戶端請(qǐng)求不包含sessionid,則為此客戶端創(chuàng)建一個(gè)session并且生成一個(gè)與此session相關(guān)聯(lián)的sessionid,sessionid的值應(yīng)該是一個(gè)既不會(huì)重復(fù),又不容易被找到規(guī)律以仿造的字符串,這個(gè)sessionid將被在本次響應(yīng)中返回給客戶端保存。_保存這個(gè)sessionid的方式可以采用cookie,這樣在交互過程中瀏覽器可以自動(dòng)的按照規(guī)則把這個(gè)標(biāo)識(shí)發(fā)給服務(wù)器。一般這個(gè)cookie的名字都是類似于SEEESIONID。r由于cookie可以被人為的禁止,必須有其他機(jī)制以便在cookie被禁止時(shí)仍然能夠把sessionid傳遞回服務(wù)器。經(jīng)常被使用的一種技術(shù)叫做URL重寫,就是把sessionid直接附加在URL路徑的后面,附加方式也有兩種,一種是作為URL路徑的附加信息,表現(xiàn)形式為http://…../xxx;SEEESIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764比另一種是作為查詢字符串附加在URL后面,表現(xiàn)形式為http://…../xxx?SEEESIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764參為了在整個(gè)交互過程中始終保持狀態(tài),就必須在每個(gè)客戶端可能請(qǐng)求的路徑后面都包含這個(gè)SEEESIONID。85.Cookie的原理及使用?Cookie是網(wǎng)站保存在瀏覽器客戶端的信息,也就是說保存在訪客的機(jī)器里的變量,一般隨著HTTP頭發(fā)送到服務(wù)器端。在Cookie生效之后及失效之前,客戶每次發(fā)出頁面請(qǐng)求的時(shí)候(包括PHP頁面和靜態(tài)html頁面),都會(huì)把Cookie一塊發(fā)送到服務(wù)器,只要我們針對(duì)它進(jìn)行相應(yīng)的處理,就可以實(shí)現(xiàn)變量”追隨”。到86.Form中的get和post方法,在數(shù)據(jù)傳輸過程中分別對(duì)應(yīng)了HTTP協(xié)議中的GET和POST方法。二者主要區(qū)別如下:a、Get是用來從服務(wù)器上獲得數(shù)據(jù),而Post是用來向服務(wù)器上傳遞數(shù)據(jù)。b、Get將表單中數(shù)據(jù)的按照variable=value的形式,添加到action所指向的URL后面,并且兩者使用”?”連接,而各個(gè)變量之間使用”&”連接;Post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中,按照變量和值相對(duì)應(yīng)的方式,傳遞到action所指向URL。uc、Get是不安全的,因?yàn)樵趥鬏斶^程,數(shù)據(jù)被放在請(qǐng)求的URL中,而如今現(xiàn)有的很多服務(wù)器、代理服務(wù)器或者用戶代理都會(huì)將請(qǐng)求URL記錄到日志文件中,然后放在某個(gè)地方,這樣就可能會(huì)有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的數(shù)據(jù),一些系統(tǒng)內(nèi)部消息將會(huì)一同顯示在用戶面前。Post的所有操作對(duì)用戶來說都是不可見的。而d、Get傳輸?shù)臄?shù)據(jù)量小,這主要是因?yàn)槭躑RL長(zhǎng)度限制;而Post可以傳輸大量的數(shù)據(jù),所以在上傳文件只能使用Post(當(dāng)然還有一個(gè)原因,將在后面的提到)。e、Get限制Form表單的數(shù)據(jù)集的值必須為ASCII字符;而Post支持整個(gè)ISO10646字符集。f、Get是Form的默認(rèn)方法。*.Post傳輸數(shù)據(jù)時(shí),不需要在URL中顯示出來,而Get方法要在URL中顯示。*.Post傳輸?shù)臄?shù)據(jù)量大,可以達(dá)到2M,而Get方法由于受到URL長(zhǎng)度的限制,只能傳遞大約1024字節(jié)..Post顧名思義,就是為了將數(shù)據(jù)傳送到服務(wù)器段,Get就是為了從服務(wù)器段取得數(shù)據(jù).而Get之所以也能傳送數(shù)據(jù),只是用來設(shè)計(jì)告訴服務(wù)器,你到底需要什么樣的數(shù)據(jù).Post的信息作為http請(qǐng)求的內(nèi)容,而Get是在Http頭部傳輸?shù)摹L?7.PHP5中魔術(shù)方法函數(shù)有哪幾個(gè),請(qǐng)舉例說明各自的用法__sleep__wakeup__toString__set_state__construct,__destruct__call,__get,__set,__isset,__unset__clone__autoload88.isset()和empty()的區(qū)別兩者都是測(cè)試變量用的。但是isset()是測(cè)試變量是否被賦值,而empty()是測(cè)試一個(gè)已經(jīng)被賦值的變量是否為空。如果一個(gè)變量沒被賦值就引用在php里是被允許的,但會(huì)有notice提示。如果一個(gè)變量被賦空值,$foo=””或者$foo=0或者$foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是說賦空值不會(huì)注銷一個(gè)變量。要注銷一個(gè)變量,可以用dunset($foo)或者$foo=NULL。89.以下哪一句不會(huì)把John新增到users陣列?$users[]=‘john’;成功把John新增到陣列users。array_add($users,’john’);函式array_add()無定義。array_push($users,‘john’);成功把John新增到陣列users。$users||=‘john’;語法錯(cuò)誤。90.以下哪一個(gè)函式可以把瀏覽器轉(zhuǎn)向到另一個(gè)頁面?redir()這不是一個(gè)PHP函式,會(huì)引致執(zhí)行錯(cuò)誤。header()這個(gè)是正確答案,header()用來插入卷頭資料,可以用來使瀏覽器轉(zhuǎn)向到另一個(gè)頁面,例如:header(“”);location()這不是一個(gè)PHP函式,會(huì)引致執(zhí)行錯(cuò)誤。redirect()這不是一個(gè)PHP函式,會(huì)引致執(zhí)行錯(cuò)誤。91.PHP中的非靜態(tài)方法可以通過靜態(tài)調(diào)用嗎,反之呢?其實(shí)問題是問沒有通過static定義的方法,能否通過”對(duì)象名::方法名“這樣的形式來調(diào)用。答案是會(huì)產(chǎn)生一個(gè)strict錯(cuò)誤,但在會(huì)繼續(xù)執(zhí)行代碼。反之,能否通過“對(duì)象名->方法名“的形式來調(diào)用static定義的方法?答案是不能,會(huì)出錯(cuò)并中斷程序執(zhí)行。92.使用utf-8編碼,以下代碼輸出結(jié)果是什么?strlen函數(shù)是計(jì)算字符串的字節(jié)數(shù)還是字符數(shù)?$str=“您好hello”;答案:echostrlen($str); 11strlen()函數(shù)返回字符串的長(zhǎng)度。93..什么是時(shí)間戳?時(shí)間戳能代表的最小年份和最大年份是多少?答案:(格林威治時(shí)間1970年1月1日00:00:00)到當(dāng)前時(shí)間的秒數(shù)。有效的時(shí)間戳典型范圍是格林威治時(shí)間1901年12月13日20:45:54到2038年1月19日03:14:07。(此范圍符合32位有符號(hào)整數(shù)的最小值和最大值)。不過在PHP5.1之前此范圍在某些系統(tǒng)(如Windows)中限制為從1970年1月1日到2038年1月19日。94.MyISAM與innoDB存儲(chǔ)引擎有何差別?答案:A、兩者在文件構(gòu)成上有區(qū)別;B、InnoDB支持事務(wù)處理,MyISAM不支持;C、對(duì)無WHERE子句的COUNT(*)操作的不同:MyISAM中保存了該值,直接讀取,InnoDB需要作全表掃描;D、鎖的區(qū)別:InnoDB支持表級(jí)鎖和行級(jí)鎖,MyISAM只支持表級(jí)鎖;E、索引會(huì)緩存數(shù)據(jù),而MYISAM不會(huì);F、INNODB不區(qū)分char和varchar;G、INNODB支持hash索引,而MYISAM不支持;H、InnoDB不支持FULLTEXT類型的索引;I、InnoDB中不保存表的具體行數(shù),也就是說,執(zhí)行selectcount(*)fromtable時(shí),InnoDB要掃描一遍整個(gè)表來計(jì)算有多少行,但是MyISAM只要簡(jiǎn)單的讀出保存好的行數(shù)即可。注意的是,當(dāng)count(*)語句包含where條件時(shí),兩種表的操作是一樣的;J、對(duì)于AUTO_INCREMENT類型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯(lián)合索引;K、DELETEFROMtable時(shí),InnoDB不會(huì)重新建立表,而是一行一行的刪除;L、LOADTABLEFROMMASTER操作對(duì)InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導(dǎo)入數(shù)據(jù)后再改成InnoDB表,但是對(duì)于使用的額外的InnoDB特性(例如外鍵)的表不適用。95..如何記錄php程序錯(cuò)誤至系統(tǒng)日志?答案:將PHP的log_errors開啟即可,默認(rèn)是記錄到WEB服務(wù)器的日志文件里,比如Apache的error.log文件。當(dāng)然也可以記錄錯(cuò)誤日志到指定的文件中。代碼如下:#vim/etc/php.inidisplay_errors=Offlog_errors=Onerror_log=/var/log/php-error.log另外也可以設(shè)定error_log=syslog,使這些錯(cuò)誤信息記錄到操作系統(tǒng)的日志里。display_errors=Off//不顯示錯(cuò)誤error_reporting設(shè)定錯(cuò)誤訊息回報(bào)的等級(jí)96.用最少的代碼寫一個(gè)求3值最大值的函數(shù).答案:functio

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論