實用php面試題及答案_第1頁
實用php面試題及答案_第2頁
實用php面試題及答案_第3頁
實用php面試題及答案_第4頁
實用php面試題及答案_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實用php面試題及答案

實用php面試題及答案

收集一些實用php面試題及答案給大家

做為程序員,到IT企業(yè)面試的時候肯定會有筆試這關(guān),那就要考考你的PHP知識了,所以收集一些實用的php面試題及答案給大家。

根底題:

1.表單中g(shù)et與post提交辦法的區(qū)別《

答:get是發(fā)送請求HTTP協(xié)議通過url參數(shù)傳遞進行接收,而post是實體數(shù)據(jù),可以通過表單提交大量信息.

2.session與cookie的區(qū)別《

答:session:儲存用戶訪問的全局唯一變量,存儲在效勞器上的php指定的目錄中的〔session_dir〕的位置進行的寄存

cookie:用來存儲連續(xù)訪問一個頁面時所使用,是存儲在客戶端,對于Cookie來說是存儲在用戶WIN的Temp目錄中的。

兩者都可通過時間來設(shè)置時間長短

3.數(shù)據(jù)庫中的事務(wù)是什么《

答:事務(wù)〔transaction〕是作為一個單元的一組有序的數(shù)據(jù)庫操作。如果組中的所有操作都成功,那么認為事務(wù)成功,即使只有一個操作失敗,事務(wù)也不成功。如果所有操作完成,

事務(wù)那么提交,其修改將作用于所有其他數(shù)據(jù)庫進程。如果一個操作失敗,那么事務(wù)將回滾,該事務(wù)所有操作的影響都將取消。

簡述題:

1、用PHP打印出前一天的時間格式是2022-5-1022:21:21(2分)

答:echodate('Y-m-dH:i:s',strtotime('-1days'));

2、echo(),print(),print_r()的區(qū)別(3分)

答:echo是PHP語句,print和print_r是函數(shù),語句沒有返回值,函數(shù)可以有返回值(即便沒有用)

print〔〕

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

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

echo

輸出一個或者多個字符串

3、能夠使HTML和PHP別離開使用的模板(1分)

答:Smarty,Dwoo,TinyButStrong,TemplateLite,Savant,phemplate,XTemplate

5、使用哪些工具進行版本控制《(1分)

答:cvs,svn,vss;

6、如何實現(xiàn)字符串翻轉(zhuǎn)《(3分)

答:echostrrev($a);

7、優(yōu)化MYSQL數(shù)據(jù)庫的辦法。(4分,多寫多得)

答:

1、選取最適用的字段屬性,盡可能減少定義字段長度,盡量把字段設(shè)置NOTNULL,示例'省份,性別',最好設(shè)置為ENUM

2、使用連接〔JOIN〕來代替子查詢:

a.刪除沒有任何訂單客戶:DELETEFROMcustomerinfoWHEREcustomeridNOTin(SELECTcustomeridFROMorderinfo)

b.提取所有沒有訂單客戶:SELECTFROMcustomerinfoWHEREcustomeridNOTin(SELECTcustomeridFROMorderinfo)

c.提高b的速度優(yōu)化:SELECTFROMcustomerinfoLEFTJOINorderidcustomerinfo.customerid=orderinfo.customerid

WHEREorderinfo.customeridISNULL

3、使用聯(lián)合(UNION)來代替手動創(chuàng)立的臨時表

a.創(chuàng)立臨時表:SELECTnameFROM`nametest`UNIONSELECTusernameFROM`nametest2`

4、事務(wù)處理:

a.保證數(shù)據(jù)完整性,示例添加和修改同時,兩者成立那么都執(zhí)行,一者失敗都失敗

mysql_query("BEGIN");

mysql_query("INSERTINTOcustomerinfo(name)VALUES('$name1')";

mysql_query("SELECT*FROM`orderinfo`wherecustomerid=".$id");

mysql_query("COMMIT");

5、鎖定表,優(yōu)化事務(wù)處理:

a.我們用一個SELECT語句取出初始數(shù)據(jù),通過一些計算,用UPDATE語句將新值更新到表中。

包含有WRITE關(guān)鍵字的LOCKTABLE語句可以保證在UNLOCKTABLES命令被執(zhí)行之前,

不會有其它的訪問來對inventory進行插入、更新或者刪除的操作

mysql_query("LOCKTABLEcustomerinfoREAD,orderinfoWRITE");

mysql_query("SELECTcustomeridFROM`customerinfo`whereid=".$id);

mysql_query("UPDATE`orderinfo`SETordertitle='$title'wherecustomerid=".$id);

mysql_query("UNLOCKTABLES");

6、使用外鍵,優(yōu)化鎖定表

a.把customerinfo里的customerid映射到orderinfo里的customerid,

任何一條沒有合法的customerid的記錄不會寫到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表中的一條記錄刪除的話同時也會刪除order

表中的該用戶的所有記錄,注意使用外鍵要定義事務(wù)平安類型為INNODB;

7、建立索引:

a.格式:

(普通索引)->

創(chuàng)立:CREATEINDEXONtablename(索引字段)

修改:ALTERTABLEtablenameADDINDEX[索引名](索引字段)

創(chuàng)表指定索引:CREATETABLEtablename([...],INDEX[索引名](索引字段))

(唯一索引)->

創(chuàng)立:CREATEUNIQUEONtablename(索引字段)

修改:ALTERTABLEtablenameADDUNIQUE[索引名](索引字段)

創(chuàng)表指定索引:CREATETABLEtablename([...],UNIQUE[索引名](索引字段))

(主鍵)->

它是唯一索引,一般在創(chuàng)立表是建立,格式為:

CREATATABLEtablename([...],PRIMARYKEY[索引字段])

8、優(yōu)化查詢語句

a.最好在相同字段進行比擬操作,在建立好的索引字段上盡量減少函數(shù)操作

例子1:

SELECT*FROMorderWHEREYEAR(orderDate)

SELECT*FROMorderWHEREorderDate

例子2:

SELECT*FROMorderWHEREaddtime/7

SELECT*FROMorderWHEREaddtime

例子3:

SELECT*FROMorderWHEREtitlelike"%good%";

SELECT*FROMorderWHEREtitle>="good"andname

8、PHP的意思(送1分)

答:PHP是一個基于效勞端來創(chuàng)立動態(tài)網(wǎng)站的腳本語言,您可以用PHP和HTML生成網(wǎng)站主頁

9、MYSQL取得當(dāng)前時間的函數(shù)是《,格式化日期的函數(shù)是(2分)

答:now(),date()

10、實現(xiàn)中文字串截取無亂碼的辦法。(3分)

答:functionGBsubstr($string,$start,$length){

if(strlen($string)>$length){

$str=null;

$len=$start+$length;

for($i=$start;$i

if(ord(substr($string,$i,1))>0xa0){

$str.=substr($string,$i,2);

$i++;

}else{

$str.=substr($string,$i,1);

}

}

return$str.'...';

}else{

return$string;

}

}

11、您是否用過版本控制軟件《如果有您用的版本控制軟件的名字是《(1分)

12、您是否用過模板引擎《如果有您用的模板引擎的名字是《(1分)

答:用過,smarty

13、請簡單闡述您最得意的開發(fā)之作(4分)

答:信息分類

14、對于大流量的網(wǎng)站,您采用什么樣的辦法來解決訪問量問題《(4分)

答:確認效勞器硬件是否足夠支持當(dāng)前的流量,數(shù)據(jù)庫讀寫別離,優(yōu)化數(shù)據(jù)表,

程序功能規(guī)那么,禁止外部的盜鏈,控制大文件的下載,使用不同主機分流主要流量

15、用PHP寫出顯示客戶端IP與效勞器IP的代碼1分)

答:打印客戶端IP:echo$_SERVER[‘REMOTE_ADDR’];或者:getenv('REMOTE_ADDR');

打印效勞器IP:echogethostbyname("www.bolaiwu")

16、語句include和require的區(qū)別是什么《為防止屢次包含同一文件,可用(《)語句代替它們《(2分)

答:require->require是無條件包含也就是如果一個流程里參加require,無論條件成立與否都會先執(zhí)行require

include->include有返回值,而require沒有(可能因為如此require的速度比include快)

注意:包含文件不存在或者語法錯誤的時候require是致命的,include不是

17、如何修改SESSION的生存時間(1分).

答:辦法1:將php.ini中的session.gc_maxlifetime設(shè)置為9999重啟apache

辦法2:$savePath="./session_save_dir/";

$lifeTime=小時*秒;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

辦法3:setcookie()andsession_set_cookie_params($lifeTime);

linfeng2022-05-2014:44

18、有一個網(wǎng)頁地址,比方PHP開發(fā)資源網(wǎng)主頁:www.phpres/index.html,如何得到它的內(nèi)容《($1分)

答:辦法1(對于PHP5及更高版本):

$readcontents=fopen("www.phpres/index.html","rb");

$contents=stream_get_contents($readcontents);

fclose($readcontents);

echo$contents;

辦法2:

echofile_get_contents("www.phpres/index.html");

19、在HTTP1.0中,狀態(tài)碼401的含義是(《);如果返回找不到文件的提示,那么可用header函數(shù),其語句為(《);(2分)

答:狀態(tài)401代表未被授權(quán),header("Location:www.xxx.php");

12、在PHP中,heredoc是一種特殊的字符串,它的結(jié)束標(biāo)志必須《(1分)

答:heredoc的語法是用"

例子:

$str=

mynameisJiangQihui!

SHOW;

13、談?wù)刟sp,php,jsp的優(yōu)缺點(1分)

答:ASP全名ActiveServerPages,是一個WEB效勞器端的開發(fā)環(huán)境,利用它可以產(chǎn)生和運

行動態(tài)的、交互的、高性能的WEB效勞應(yīng)用程序。ASP采用腳本語言VBScript〔Javascript

〕作為自己的開發(fā)語言。

PHP是一種跨平臺的效勞器端的嵌入式腳本語言.它大量地借用C,Java和Perl語言的語法

,并耦合PHP自己的特性,使WEB開發(fā)者能夠快速地寫出動態(tài)生成頁面.它支持目前絕大多數(shù)數(shù)

據(jù)庫。還有一點,PHP是完全免費的,不用花錢,你可以從PHP官方站點(www.php.ne

t)自由下載。而且你可以不受限制地獲得源碼,甚至可以從中加進你自己需要的特色。

JSP是Sun公司推出的新一代站點開發(fā)語言,他完全解決了目前ASP,PHP的一個通?。?/p>

腳本級執(zhí)行〔據(jù)說PHP4也已經(jīng)在Zend的支持下,實現(xiàn)編譯運行〕.Sun公司借助自己在Jav

a上的非凡造詣,將Java從Java應(yīng)用程序和JavaApplet之外,又有新的碩果,就是Js

p--JavaServerPage。Jsp可以在Serverlet和JavaBean的支持下,完成功能強大的站點

程序。

三者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。

但JSP代碼被編譯成Servlet并由Java虛擬機解釋執(zhí)行,這種編譯操作僅在對JSP頁面的

第一次請求時發(fā)生。在ASP、PHP、JSP環(huán)境下,HTML代碼主要負責(zé)描述信息的顯示樣式

,而程序代碼那么用來描述處理邏輯。普通的HTML頁面只依賴于Web效勞器,而ASP、PH

P、JSP頁面需要附加的語言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到

HTML代碼中,然后一起發(fā)送給瀏覽器。ASP、PHP、JSP三者都是面向Web效勞器的技術(shù)

,客戶端瀏覽器不需要任何附加的軟件支持。

14、談?wù)剬vc的認識(1分)

答:由模型(model),視圖(view),控制器(controller)完成的應(yīng)用程序

由模型發(fā)出要實現(xiàn)的功能到控制器,控制器接收組織功能傳遞給視圖;

15、寫出發(fā)貼數(shù)最多的十個人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)

答:SELECT*FROM`members`ORDERBYpostsDESClimit0,10;

16.請表明php中傳值與傳引用的區(qū)別。什么時候傳值什么時候傳引用《(2分)

答:按值傳遞:函數(shù)范圍內(nèi)對值的任何改變在函數(shù)外部都會被忽略

按引用傳遞:函數(shù)范圍內(nèi)對值的任何改變在函數(shù)外部也能反映出這些修改

優(yōu)缺點:按值傳遞時,php必須復(fù)制值。特別是對于大型的字符串和對象來說,這將會是一個代價很大的操作。

按引用傳遞那么不需要復(fù)制值,對于性能提高很有好處。

17.在PHP中error_reporting這個函數(shù)有什么作用《(1分)

答:設(shè)置錯誤級別與錯誤信息回報

18.請寫一個函數(shù)驗證電子郵件的格式是否正確(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);

}

19.簡述如何得到當(dāng)前執(zhí)行腳本路徑,包括所得到參數(shù)。(2分)

答:$script_name=basename(__file__);print_r($script_name);

21、JS表單彈出對話框函數(shù)是《獲得輸入焦點函數(shù)是《(2分)

答:彈出對話框:alert(),prompt(),confirm()

獲得輸入焦點focus()

22、JS的轉(zhuǎn)向函數(shù)是《怎么引入一個外部JS文件《(2分)

答:window.location.href,

23、foo()和@foo()之間有什么區(qū)別《(1分)

答:@foo()控制錯誤輸出

24、如何聲明一個名為myclass的沒有辦法和屬性的類《(1分)

答:classmyclass{}

25、如何實例化一個名為myclass的對象《(1分)

答:newmyclass()

26、你如何訪問和設(shè)置一個類的屬性《(2分)

答:$object=newmyclass();

$newstr=$object->test;

$object->test="info";

27、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ù)字數(shù)組,兩者兼得

28、GD庫是做什么用的《(1分)

答:gd庫提供了一系列用來處理圖片的API,使用GD庫可以處理圖片,或者生成圖片。

在網(wǎng)站上GD庫通常用來生成縮略圖或者用來對圖片加水印或者對網(wǎng)站數(shù)據(jù)生成報表。

29、指出一些在PHP輸入一段HTML代碼的方法。(1分)

答:echo"aaa";

30、下面哪個函數(shù)可以翻開一個文件,以對文件進行讀和寫操作《(1分)

(a)fget()(b)file_open()(c)fopen()(d)open_file()

[

c

]

31、下面哪個選項沒有將john添加到users數(shù)組中《(1分)

(a)$users[]=‘john’;

(b)array_add($users,’john’);

(c)array_push($users,‘john’);

(d)$users||=‘john’;

[

a,c

]

32、下面的程序會輸入是否《(1分)

$num=10;

functionmultiply(){

$num=$num*10;

}

multiply();

echo$num;

《>

輸出:10

33、使用php寫一段簡單查詢,查出所有姓名為張三的內(nèi)容并打印出來(2分)

表名User

NameTelContentDate

張專畢業(yè)2022-10-11

張科畢業(yè)2022-10-15

張專畢業(yè)2022-10-15

請根據(jù)上面的題目完成代碼:

$mysql_db=mysql_connect("local","root","pass");

@mysql_select_db("DB",$mysql_db);

$result=mysql_query("SELECT*FROM`user`WHEREname='張三'");

while($rs=mysql_fetch_array($result)){

echo$rs["tel"].$rs["content"].$rs["date"];

}

34、如何使用下面的類,并解釋下面什么意思《(3)

classtest{

functionGet_test($num){

$num=md5(md5($num)."En");

return$num;

}

}

答:$testnum="123";

$object=newtest();

$encrypt=$object->Get_test($testnum);

echo$encrypt;

類test里面包含Get_test辦法,實例化類調(diào)用辦法多字符串加密

35、寫出SQL語句的格式:插入,更新,刪除(4分)

表名User

NameTelContentDate

張專畢業(yè)2022-10-11

張科畢業(yè)2022-10-15

張專畢業(yè)2022-10-15

(a)有一新記錄(小中畢業(yè)2022-05-06)請用SQL語句新增至表中

mysql_query("INSERTINTO`user`(name,tel,content,date)VALUES

('小王',,'高中畢業(yè)','2022-05-06')")

(b)請用sql語句把張三的時間更新成為當(dāng)前系統(tǒng)時間

$nowDate=date("Ymd");

mysql_query("UPDATE`user`SETdate='".$nowDate."'WHEREname='張山'");

(c)請寫出刪除名為張四的全部記錄

mysql_query("DELETEFROM`user`WHEREname='張四'");

36、請寫出數(shù)據(jù)類型(intcharvarchardatetimetext)的意思;請問varchar和char有什么區(qū)別(2分)

答:int是數(shù)字類型,char固定長度字符串,varchar實際長度字符串,datetime日期時間型,text文本字符串

char的場地固定為創(chuàng)立表設(shè)置的長度,varchar為可變長度的字符

38、寫出下列程序的輸出結(jié)果(1分)

$b=201;

$c=40;

$a=$b>$c《4:5;

echo$a;

《>

答:4

39、檢測一個變量是否有設(shè)置的函數(shù)是否《是否為空的函數(shù)是《(2分)

答:isset($str),empty($str);

40、取得查詢結(jié)果集總數(shù)的函數(shù)是《(1分)

答:mysql_num_rows($result);

41、$arr=array('james','tom','symfony');請打印出第一個元素的值(1分)

答:echo$array[0];

42、請將41題的數(shù)組的值用','號分隔并合并成字串輸出(1分)

答:for($i=0;$i

43、$a='abcdef';請取出$a的值并打印出第一個字母(1分)

答:echo$a{0}或echosubstr($a,0,1)

44、PHP可以和sqlserver/oracle等數(shù)據(jù)庫連接嗎《(1分)

答:當(dāng)然可以

45、請寫出PHP5權(quán)限控制修飾符(3分)

答:public(公共),private(私用),protected(繼承)

46、請寫出php5的構(gòu)造函數(shù)和析構(gòu)函數(shù)(2分)

答:__construct,__destruct

47、完成下列:

(一)創(chuàng)立新聞發(fā)布系統(tǒng),表名為message有如下字段(3分)

id文章id

title文章標(biāo)題

content文章內(nèi)容

category_id文章分類id

hits點擊量

答:CREATETABLE'message'(

'id'int(10)NOTNULLauto_increment,

'title'varchar(200)defaultNULL,

'content'text,

'category_id'int(10)NOTNULL,

'hits'int(20),

PRIMARYKEY('id');

)ENGINE=InnoDBDEFAULTCHARSET=utf8;

(二)同樣上述新聞發(fā)布系統(tǒng):表comment記錄用戶回復(fù)內(nèi)容,字段如下(4分)

comment_id回復(fù)id

id文章id,關(guān)聯(lián)message表中的id

comment_content回復(fù)內(nèi)容

現(xiàn)通過查詢數(shù)據(jù)庫需要得到下列格式的文章標(biāo)題列表,并按照回復(fù)數(shù)量排序,回復(fù)最高的排在最前面

文章id文章標(biāo)題點擊量回復(fù)數(shù)量

用一個SQL語句完成上述查詢,如果文章沒有回復(fù)那么回復(fù)數(shù)量顯示為0

答:SELECTmessage.idid,message.titletitle,IF(message.`hits`ISNULL,0,message.`hits`)hits,

IF(comment.`id`isNULL,0,count(*))numberFROMmessageLEFTJOIN

commentONmessage.id=comment.idGROUPBYmessage.`id`;

(三)上述內(nèi)容管理系統(tǒng),表category保留分類信息,字段如下(3分)

category_idint(4)notnullauto_increment;

categroy_namevarchar(40)notnull;

用戶輸入文章時,通過選擇下拉菜單項選擇定文章分類

寫出如何實現(xiàn)這個下拉菜單

答:functioncategoryList()

{

$result=mysql_query("selectcategory_id,categroy_namefromcategory")

ordie("Invalidquery:".mysql_error());

print("\n");

while($rowArray=mysql_fetch_array($result))

{

print("".$rowArray['categroy_name']."\n");

}

print("");

}

linfeng2022-05-2014:45

編程題:

1.寫一個函數(shù),盡可能高效的,從一個規(guī)范url里取出文件的擴展名

示例:www.sina/abc/de/fg.php《id=1需要取出php或.php

答案1:

functiongetExt($url){

$arr=parse_url($url);

$file=basename($arr['path']);

$ext=explode(".",$file);

return$ext[1];

}

答案2:

functiongetExt($url){

$url=basename($url);

$pos1=strpos($url,".");

$pos2=strpos($url,"《");

if(strstr($url,"《")){

returnsubstr($url,$pos1+1,$pos2-$pos1-1);

}else{

returnsubstr($url,$pos1);

}

}

2.在HTML語言中,頁面頭部的meta標(biāo)記可以用來輸出文件的編碼格式,下列是一個規(guī)范的meta語句

請使用PHP語言寫一個函數(shù),把一個規(guī)范HTML頁面中的類似meta標(biāo)記中的charset局部值改為big5

請注意:

1.需要處理完整的html頁面,即不光此meta語句

2.忽略大小寫

3.'和"在此處是可以互換的

4.'Content-Type'兩側(cè)的引號是可以忽略的,但'text/html;charset=gbk'兩側(cè)的不行

5.注意處理多余空格

3.寫一個函數(shù),算出兩個文件的相對路徑

如$a='/a/b/c/d/e.php';

$b='/a/b/12/34/c.php';

計算出$b相對于$a的相對路徑應(yīng)該是../../c/d將()添上

答:functiongetRelativePath($a,$b){

$returnPath=array(dirname($b));

$arrA=explode('/',$a);

$arrB=explode('/',$returnPath[0]);

for($n=1,$len=count($arrB);$n

if($arrA[$n]!=$arrB[$n]){

break;

}

}

if($len-$n>0){

$returnPath=array_merge($returnPath,array_fill(1,$len-$n,'..'));

}

$returnPath=array_merge($returnPath,array_slice($arrA,$n));

returnimplode('/',$returnPath);

}

echogetRelativePath($a,$b);

填空題:

1.在PHP中,當(dāng)前腳本的名稱(不包括路徑和查詢字符串)記錄在預(yù)定義變量__$_SERVER['PHP_SELF']__中;而鏈接到當(dāng)前頁面的URL記錄在預(yù)定義變量__$_SERVER['HTTP_REFERER']__

2.執(zhí)行程序段將輸出__0__。

3.在HTTP1.0中,狀態(tài)碼401的含義是____;如果返回找不到文件的提示,那么可用header函數(shù),其語句為____。

4.數(shù)組函數(shù)arsort的作用是__對數(shù)組進行逆向排序并保持索引關(guān)系__;語句error_reporting(2047)的作用是__報告所有錯誤和警告__。

5.PEAR中的數(shù)據(jù)庫連接字符串格式是____。

6.寫出一個正那么敘述式,過慮網(wǎng)頁上的所有JS/VBS腳本(即把scrīpt標(biāo)記及其內(nèi)容都去掉):preg_replace("/].*《>.*《/si","newinfo",$script);

7.以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動態(tài)裝載PHP模塊,然后再用語句____使得Apache把所有擴展名為php的文件都作為PHP腳本處理。

LoadModulephp5_module"c:/php/php5apache2.dll",AddTypeapplication/x-httpd-php.php,

8.語句include和require都能把另外一個文件包含到當(dāng)前文件中,它們的區(qū)別是____;為了防止屢次包含同一文件,可以用語句__require_once||include_once__來代替它們。

9.類的屬性可以序列化后保留到session中,從而以后可以恢復(fù)整個類,這要用到的函數(shù)是____。

10.一個函數(shù)的參數(shù)不能是對變量的引用,除非在php.ini中把__allow_call_time_pass_referenceboolean__設(shè)為on.

11.SQL中LEFTJOIN的含義是__自然左外鏈接__。如果tbl_user記錄了學(xué)生的姓名(name)和學(xué)號(ID),tbl_score記錄了學(xué)生(有的學(xué)生考試以后被開除了,沒有其記錄)的學(xué)號(ID)

和考試成績(score)以及考試科目(subject),要想打印出各個學(xué)生姓名及對應(yīng)的的各科總成績,那么可以用SQL語句____。

12.在PHP中,heredoc是一種特殊的字符串,它的結(jié)束標(biāo)志必須____。

編程題:

13.寫一個函數(shù),能夠遍歷一個文件夾下的所有文件和子文件夾。

答:

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;

}

}

14.簡述論壇中無限分類的實現(xiàn)原理。

答:

/*

數(shù)據(jù)表結(jié)構(gòu)如下:

CREATETABLE`category`(

`categoryID`smallint(5)unsignedNOTNULLauto_increment,

`categoryParentID`smallint(5)unsignedNOTNULLdefault'0',

`categoryName`varchar(50)NOTNULLdefault'',

PRIMARYKEY(`categoryID`)

)ENGINE=MyISAMDEFAULTCHARSET=gbk;

INSERTINTO`category`(`categoryParentID`,`categoryName`)VALUES

(0,'一級類別'),

(1,'二級類別'),

(1,'二級類別'),

(1,'二級類別'),

(2,'三級類別'),

(2,'333332'),

(2,'234234'),

(3,'aqqqqqd'),

(4,'哈哈'),

(5,'66333666');

*/

//指定分類id變量$category_id,然后返回該分類的所有子類

//$default_category為默認的選中的分類

functionGet_Category($category_id=0,$level=0,$default_category=0)

{

global$DB;

$sql="SELECT*FROMcategoryORDERBYcategoryIDDESC";

$result=$DB->query($sql);

while($rows=$DB->fetch_array($result))

{

$category_array[$rows[categoryParentID]][$rows[categoryID]]=array('id'=>$rows[categoryID],'parent'=>$rows[categoryParentID],'name'=>$rows

[categoryName]);

}

if(!isset($category_array[$category_id]))

{

return"";

}

foreach($category_array[$category_id]AS$key=>$category)

{

if($category['id']==$default_category)

{

echo"

}else

{

echo"

}

if($level>0)

{

echo">".str_repeat("",$level)."".$category['name']."\n";

}

else

{

echo">".$category['name']."\n";

}

Get_Category($key,$level+1,$default_category);

}

unset($category_array[$category_id]);

}

/*

函數(shù)返回的數(shù)組格式如下所示:

Array

(

[1]=>Array([id]=>1[name]=>一級類別[level]=>0[ParentID]=>0)

[4]=>Array([id]=>4[name]=>二級類別[level]=>1[ParentID]=>1)

[9]=>Array([id]=>9[name]=>哈哈[level]=>2[ParentID]=>4)

[3]=>Array([id]=>3[name]=>二級類別[level]=>1[ParentID]=>1)

[8]=>Array([id]=>8[name]=>aqqqqqd[level]=>2[ParentID]=>3)

[2]=>Array([id]=>2[name]=>二級類別[level]=>1[ParentID]=>1)

[7]=>Array([id]=>7[name]=>234234[level]=>2[ParentID]=>2)

[6]=>Array([id]=>6[name]=>333332[level]=>2[ParentID]=>2)

[5]=>Array([id]=>5[name]=>三級類別[level]=>2[ParentID]=>2)

[10]=>Array([id]=>10[name]=>66333666[level]=>3[ParentID]=>5)

)

*/

//指定分類id,然后返回數(shù)組

functionCategory_array($category_id=0,$level=0)

{

global$DB;

$sql="SELECT*FROMcategoryORDERBYcategoryIDDESC";

$result=$DB->query($sql);

while($rows=$DB->fetch_array($result))

{

$category_array[$rows['categoryParentID']][$rows['categoryID']]=$rows;

}

foreach($category_arrayAS$key=>$val)

{

if($key==$category_id)

{

foreach($valAS$k=>$v)

{

$options[$k]=

array(

'id'=>$v['categoryID'],'name'=>$v['categoryName'],'level'=>$level,'ParentID'=>$v['categoryParentID']

);

$children=Category_array($k,$level+1);

if(count($children)>0)

{

$options=$options+$children;

}

}

}

}

unset($category_array[$category_id]);

return$options;

}

《>

classcate

{

functionGet_Category($category_id=0,$level=0,$default_category=0)

{

echo$category_id;

$arr=array(

'0'=>array(

'1'=>array('id'=>1,'parent'=>0,'name'=>'1111'),

'2'=>array('id'=>2,'parent'=>0,'name'=>'2222'),

'4'=>array('id'=>4,'parent'=>0,'name'=>'4444')

溫馨提示

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

最新文檔

評論

0/150

提交評論