PHP面試題附答案(實戰(zhàn)經(jīng)驗)

什么事面向?qū)ο螅恐饕卣魇鞘裁矗?/b>

面向?qū)ο笫浅绦虻囊环N設(shè)計方式,它利于提高程序的重用性,使程序結(jié)構(gòu)更加清晰。主要特征:封裝、繼承、多態(tài)。


isset() 和 empty() 區(qū)別

?Isset判斷變量是否存在,如果存在則返回真,empty判斷變量是否為空為假,如果為空為假則返回真。


SESSION 與 COOKIE的區(qū)別是什么,請從協(xié)議,產(chǎn)生的原因與作用說明??

1、http無狀態(tài)協(xié)議,不能區(qū)分用戶是否是從同一個網(wǎng)站上來的,同一個用戶請求不同的頁面不能看做是同一個用戶。

2、SESSION存儲在服務(wù)器端,COOKIE保存在客戶端。Session比較安全,cookie用某些手段可以修改,不安全。Session依賴于cookie進行傳遞。

禁用cookie后,session不能正常使用。Session的缺點:保存在服務(wù)器端,每次讀取都從服務(wù)器進行讀取,對服務(wù)器有資源消耗。Session保存在服務(wù)器端的文件或數(shù)據(jù)庫中,默認保存在文件中,文件路徑由php配置文件的session.save_path指定。Session文件是公有的。


?

include與require的區(qū)別?

1.include()在執(zhí)行文件時每次都要進行讀取和評估

??require()文件只處理一次(實際上文件內(nèi)容替換了require()語句)

2.require()通常放在PHP腳本程序的最前面

??include()的使用和require()一樣,一般放在流程控制的處理區(qū)段中,PHP腳本文件讀到include()語句時,才將它包含的文件讀進來,這種方式,可以把程序執(zhí)行時的流程簡單化

3,require()和include()語句是語言結(jié)構(gòu),不是真正的函數(shù),可以像PHP的其他語言結(jié)構(gòu)一樣

4,include_once()和require_once()語句也是在腳本執(zhí)行期間包括并運行指定文件,與include()require()唯一的區(qū)別是如果文件中的代碼已經(jīng)被包括了,則不會再次包括.

5,require()包含文件失敗,停止執(zhí)行,給出錯誤(致命的)

include()常用于動態(tài)包含.

通常是自動加載的文件,即使加載出錯,整個程序還是繼續(xù)執(zhí)行

一個頁面聲明,另一個頁面調(diào)用

包函文件失敗,繼續(xù)向下執(zhí)行,返回一條警告


HTTP 狀態(tài)中302、403、 500200、404、502代碼含義?

一二三四五原則: 一. 消息系列 二. 成功系列 ??三. 重定向系列 四. 請求錯誤系列 五. 服務(wù)器端錯誤系列??302:臨時轉(zhuǎn)移成功,請求的內(nèi)容已轉(zhuǎn)移到新位置 403:禁止訪問 500:服務(wù)器內(nèi)部錯誤 401代表未授權(quán)。200是請求成功,404是文件未找到,502是服務(wù)器內(nèi)部錯誤。


PHP字符串中單引號與雙引號的區(qū)別?

單引號不能解釋變量,而雙引號可以解釋變量。

單引號不能轉(zhuǎn)義字符,在雙引號中可以轉(zhuǎn)義字符。


請說明PHP 中傳值與傳引用的區(qū)別。什么時候傳值什么時候傳引用?

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

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

??? 優(yōu)缺點:按值傳遞時,php必須復(fù)制值。特別是對于大型的字符串和對象來說,這將會是一個代價很大的操作。按引用傳遞則不需要復(fù)制值,對于性能提高很有好處。


請寫出數(shù)據(jù)類型(int char varchar datetime text)的意思;請問 varchar 和 char有什么區(qū)別?

[if !supportLists]19、[endif]Int 整數(shù) char 定長字符 Varchar 變長字符 Datetime 日期時間型 Text 文本型 Varchar 與char的區(qū)別?char是固定長度的字符類型,分配多少空間,就占用多長空間。 Varchar是可變長度的字符類型,內(nèi)容有多大就占用多大的空間,能有效節(jié)省空間。 Varchar是變長,節(jié)省存儲空間,char是固定長度。查找效率要char型快,因為varchar是非定長,必須先查找長度,然后進行數(shù)據(jù)的提取,比char定長類型多了一個步驟,所以效率低一些


in, not ni, exist, not exist的作用和區(qū)別?

in在什么中

Not in 不在什么中

Exists 存在

Not exists 不存在


面向?qū)ο笾薪涌诤统橄箢惖膮^(qū)別及應(yīng)用場景?

1、有抽象方法的類叫做抽象類,抽象類中不一定有抽象方法,抽象方法必須使用abstract關(guān)鍵字定義。

2、接口中全部是抽象方法,方法不用使用abstract定義。

3、當多個同類的類要設(shè)計一個上層,通常設(shè)計為抽象類,當多個異構(gòu)的類要設(shè)計一個上層,通常設(shè)計為接口。


echo(),print(),print_r()的區(qū)別?

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

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

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

???echo ?輸出一個或者多個字符串

?

MyISAM 和 InnoDB 的基本區(qū)別?索引結(jié)構(gòu)如何實現(xiàn)?

MyISAM類型不支持事務(wù)處理等高級處理,而InnoDB類型支持。MyISAM類型的表強調(diào)的是性能,其執(zhí)行速度比InnoDB類型更快,但是不提供事務(wù)支持,而InnoDB提供事務(wù)支持以及外部鍵等高級數(shù)據(jù)庫功能。

創(chuàng)建索引:alert table tablename add index (`字段名`)


什么是數(shù)據(jù)庫索引,主鍵索引,唯一索引的區(qū)別,索引的缺點是什么?

索引用來快速地尋找那些具有特定值的記錄。

主鍵索引和唯一索引的區(qū)別:主鍵是一種唯一性索引,但它必須指定為“PRIMARY?KEY”,每個表只能有一個主鍵。唯一索引索引列的所有值都只能出現(xiàn)一次,即必須唯一。

索引的缺點:

1、創(chuàng)建索引和維護索引要耗費時間,這種時間隨著數(shù)據(jù)量的增加而增加。

2、索引需要占用物理空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,需要的空間就會更大。

3、當對表中的數(shù)據(jù)進行增加、刪除、修改的時候,索引也要動態(tài)的維護,這樣就降低了數(shù)據(jù)的維護速度。


數(shù)據(jù)庫中的事務(wù)是什么? ?事務(wù)(transaction)是作為一個單元的一組有序的數(shù)據(jù)庫操作。如果組中的所有操作都成功,則認為事務(wù)成功,即使只有一個操作失敗,事務(wù)也不成功。如果所有操作 完成,事務(wù)則提交,其修改將作用于所有其他數(shù)據(jù)庫進程。如果一個操作失敗,則事務(wù)將回滾,該事務(wù)所有操作的影響都將取消。


表單中g(shù)et與post提交方法的區(qū)別? 1. get是把參數(shù)數(shù)據(jù)隊列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個字段一一對應(yīng),在URL中可以看到。post是通過HTTP post機制,將表單內(nèi)各個字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。

  2. 對于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。

  3. get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。

get安全性非常低,post安全性較高。



簡述0000000中無限分類的實現(xiàn)原理

1、數(shù)據(jù)庫分類表的設(shè)計:id字段、父id字段、類名稱字段、path字段

2、Path字段存當前分類的路徑,格式:0,父類id,本身id

3、查詢分類:select * from 分類表order by path asc;

4、這樣就查出來每個分類及其對應(yīng)的子類。


foo()和@foo()之間有什么區(qū)別?(1分) @foo()控制錯誤輸出


線性表和順序表的區(qū)別?

1、線性表包括順序表和鏈表。

2、順序表中的元素的地址是連續(xù)的,鏈表里面節(jié)點的地址不是連續(xù)的,是通過指針連起來的。



使用那些工具進行版本控制?

Clear case、CVS、SVN、PVCS、Perforce、CCC、StarTeam、RCS


寫出三種以上MySQL數(shù)據(jù)庫存儲引擎的名稱(提示:不區(qū)分大小寫)MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十幾個引擎


你對Memcach的理解,優(yōu)點有哪些?

Memcache是一種緩存技術(shù),在一定的時間內(nèi)將動態(tài)網(wǎng)頁經(jīng)過解析之后保存到文件,下次訪問時動態(tài)網(wǎng)頁就直接調(diào)用這個文件,而不必在重新訪問數(shù)據(jù)庫。使用memcache做緩存的好處是:提高網(wǎng)站的訪問速度,減輕高并發(fā)時服務(wù)器的壓力。

Memcache的優(yōu)點:穩(wěn)定、配置簡單、多機分布式存儲、速度快。


實現(xiàn)中文字串截取無亂碼的方法

Mb_substr();


用PHP寫出顯示客戶端IP與服務(wù)器IP的代碼

獲取客戶端IP:get_env(“REMOTE_ADDR”);

獲取服務(wù)器端IP:$_SERVER["SERVER_ADDR"];


數(shù)據(jù)庫索引有幾類,分別是什么?什么時候該用索引?

普通索引、主鍵索引、唯一索引

并非所有的數(shù)據(jù)庫都以相同的方式使用索引,作為通用規(guī)則,只有當經(jīng)常查詢列中的數(shù)據(jù)時才需要在表上創(chuàng)建索引。


寫幾個魔術(shù)方法并說明作用?

__call()當調(diào)用不存在的方法時會自動調(diào)用的方法

__autoload()在實例化一個尚未被定義的類是會自動調(diào)用次方法來加載類文件

__set()當給未定義的變量賦值時會自動調(diào)用的方法

__get()當獲取未定義變量的值時會自動調(diào)用的方法

__construct()構(gòu)造方法,實例化類時自動調(diào)用的方法

__destroy()銷毀對象時自動調(diào)用的方法

__unset()當對一個未定義變量調(diào)用unset()時自動調(diào)用的方法

__isset()當對一個未定義變量調(diào)用isset()方法時自動調(diào)用的方法

__clone()克隆一個對象

__tostring()當輸出一個對象時自動調(diào)用的方法


$_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILE的意思是什么?

它們都是PHP預(yù)定義變量

$_REQUEST用來獲取post或get方式提交的值

$_POST用來獲取post方式提交的值

$_GET用來獲取get方式提交的值

$_COOKIE用來獲取cookie存儲的值

$_SESSION用來獲取session存儲的值

$_FILE用來獲取上傳文件表單的值


數(shù)據(jù)庫設(shè)計時,常遇到的性能瓶頸有哪些,常有的解決方案?

瓶頸主要有:

1、磁盤搜索?優(yōu)化方法是:將數(shù)據(jù)分布在多個磁盤上

2、磁盤讀/寫?優(yōu)化方法是:從多個磁盤并行讀寫。

3、CPU周期?優(yōu)化方法:擴充內(nèi)存

4、內(nèi)存帶寬?



了解XSS攻擊嗎? 如何防止 ?

XSS是跨站腳本攻擊,首先是利用跨站腳本漏洞以一個特權(quán)模式去執(zhí)行攻擊者構(gòu)造的腳本,然后利用不安全的Activex控件執(zhí)行惡意的行為。

使用htmlspecialchars()函數(shù)對提交的內(nèi)容進行過濾,使字符串里面的特殊符號實體化。


SQL注入漏洞產(chǎn)生的原因 ? 如何防止?

SQL注入產(chǎn)生的原因:程序開發(fā)過程中不注意規(guī)范書寫sql語句和對特殊字符進行過濾,導(dǎo)致客戶端可以通過全局變量POST和GET提交一些sql語句正常執(zhí)行。


描述一下大流量高并發(fā)量網(wǎng)站的解決方案

???1、確認服務(wù)器硬件是否足夠支持當前的流量。

???2、使用memcache緩存技術(shù),將動態(tài)數(shù)據(jù)緩存到內(nèi)存中,動態(tài)網(wǎng)頁直接調(diào)用這些文件,而不必在訪問數(shù)據(jù)庫。

???3、禁止外部的盜鏈。

???4、外部網(wǎng)站的圖片或者文件盜鏈往往會帶來大量的負載壓力,因此應(yīng)該嚴格限制外部對自身圖片或者文件盜鏈,目前可以簡單的通過refer來控制盜鏈,apache自己就可以通過配置來禁止盜鏈。

???5、控制大文件的下載。

大文件的下載會占用很大的流量,對于非SCSI硬盤來說會消耗,使得網(wǎng)站響應(yīng)能力下降。

???6、使用不同的主機分流主要流量

???7、使用流量統(tǒng)計軟件。

在網(wǎng)站上安裝一個流量統(tǒng)計軟件,可以即時知道哪些地方耗費了大量流量,哪些頁面需要再進行優(yōu)化。

???8、分庫分表。

???9、Sphinx全文索引引擎。

對于大流量的網(wǎng)站,您采用什么樣的方法來解決訪問量問題?

優(yōu)化程序,優(yōu)化數(shù)據(jù)庫,如果程序和數(shù)據(jù)庫已經(jīng)最優(yōu)化,使用以下解決方法:

1、確定當前服務(wù)器設(shè)備是否滿足流量需求。

2、使用Memcache緩存技術(shù),把動態(tài)內(nèi)容緩存到文件中,動態(tài)網(wǎng)頁直接調(diào)用這些文件,而不必再訪問數(shù)據(jù)庫。

3、禁止外部盜鏈,圖片和文件外部盜鏈會給服務(wù)器帶來大量的負載壓力,可以通過refer來禁止外部盜鏈,或者使用apache來配置禁止盜鏈。

4、控制大文件的下載,大文件的下載對于非SCSI硬盤來說會占用大量的資源,導(dǎo)致服務(wù)器的響應(yīng)能力下降。

5、使用不同的主機分流主要流量,使服務(wù)器均衡負載。

6、使用流量統(tǒng)計軟件統(tǒng)計分析網(wǎng)站流量,可以知道哪些地方耗費了大量的流量,哪些頁面需要再進行優(yōu)化。


如何設(shè)計或配置Mysql,才能達到高效使用的目的

???1、數(shù)據(jù)庫設(shè)計方面,設(shè)計結(jié)構(gòu)良好的數(shù)據(jù)庫,允許部分數(shù)據(jù)冗余。

選取最適用的字段屬性,盡可能把字段設(shè)置為NOTNULL,這樣在查詢的時候,數(shù)據(jù)庫不用去比較NULL值。

???2、系統(tǒng)架構(gòu)設(shè)計方面,表散列,把海量數(shù)據(jù)散列到幾個不同的表里面,集群,數(shù)據(jù)庫查詢和寫入分開。

寫高效sql語句,以提高效率。

使用連接(join)來代替子查詢

使用聯(lián)合(union)來代替手動創(chuàng)建的臨時表

所得皆必須,只從數(shù)據(jù)庫取必須的數(shù)據(jù)。

必要的時候用不同的存儲引擎,比如Innodb可以減少死鎖,HEAP可以提高一個數(shù)量級的查詢速度。

使用事務(wù)

使用外鍵

使用索引


如何進行防SQL注入?

???1、過濾掉一些常見的數(shù)據(jù)庫操作關(guān)鍵字:select,insert,update,delete,and,*等

或者通過系統(tǒng)函數(shù):addslashes(需要被過濾的內(nèi)容)來進行過濾。

???2、在PHP配置文件中

Register_globals=off;設(shè)置為關(guān)閉狀態(tài) //作用將注冊全局變量關(guān)閉。

比如:接收POST表單的值使用$_POST['user'],如果將register_globals=on;直接使用$user可以接收表單的值。

???3、SQL語句書寫的時候盡量不要省略小引號(tab鍵上面那個)和單引號

???4、提高數(shù)據(jù)庫命名技巧,對于一些重要的字段根據(jù)程序的特點命名,取不易被猜到的

???5、對于常用的方法加以封裝,避免直接暴漏SQL語句

???6、開啟PHP安全模式

Safe_mode=on;

???7、打開magic_quotes_gpc來防止SQL注入

???Magic_quotes_gpc=off;默認是關(guān)閉的,它打開后將自動把用戶提交的sql語句的查詢進行轉(zhuǎn)換,把'轉(zhuǎn)為\',這對防止sql注入有重大作用。

因此開啟:magic_quotes_gpc=on;

???8、控制錯誤信息

關(guān)閉錯誤提示信息,將錯誤信息寫到系統(tǒng)日志。

???9、使用mysqli或pdo預(yù)處理。


用PHP寫出一個安全的用戶登錄系統(tǒng)需要注意哪些方面。

1、密碼要使用MD5(密碼+字符串)進行加密。

2、登錄表單的名稱不要跟數(shù)據(jù)庫字段一樣,以免暴漏表字段。

3、用戶表的表名、字段名、密碼盡量用不容易被猜到的。

4、要使用驗證碼驗證登陸,以防止暴力破解。

5、驗證提交的數(shù)據(jù)是不是來自本網(wǎng)站。

6、登錄后臺處理代碼數(shù)據(jù)庫部分使用預(yù)處理,做好過濾,防止sql注入。


字符串轉(zhuǎn)數(shù)組,數(shù)組轉(zhuǎn)字符串,字符串截取,字符串替換,字符串查找的函數(shù)分別是什么?

???Implode()、explode()、substr()、str_replace()、strpos、strrpos、strstr


談?wù)剬vc的認識?

由模型(model),視圖(view),控制器(controller)完成的應(yīng)用程序 由模型發(fā)出要實現(xiàn)的功能到控制器,控制器接收組織功能傳遞給視圖;

MVC是一個設(shè)計模式,它強制性的使應(yīng)用程序的輸入、處理和輸出分開。使用MVC應(yīng)用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)。

視圖是用戶看到并與之交互的界面。

模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。

控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。

MVC的優(yōu)點:低耦合性、高重用性和可適用性、較低的生命周期成本、快速的部署、可維護性、可擴展性,有利于軟件工程化管理

MVC的缺點:沒有明確的定義,完全理解MVC并不容易。不適合小型規(guī)模的應(yīng)用程序。


PHP如何拋出和接收錯誤?

使用try...catch,異常的代碼放在try代碼塊內(nèi),如果沒有觸發(fā)異常,則代碼繼續(xù)執(zhí)行,如果異常被觸發(fā),就會拋出一個異常。Catch代碼塊捕獲異常,并創(chuàng)建一個包含異常信息的對象。$e->getMessage(),輸出異常的錯誤信息。


你常用到的mysql命令?

Show databases

Show tables

Insert into 表名() values()

Update 表名 set 字段=值 where ...

Delete from 表名 where ...

Select * from 表名 where 條件 order by ... Desc/asc limit ... Group by ... Having ...


你所知道的php數(shù)組相關(guān)的函數(shù)?

array()----創(chuàng)建數(shù)組

array_combine()----通過合并兩個數(shù)組來創(chuàng)建一個新數(shù)組

range()----創(chuàng)建并返回一個包含指定范圍的元素的數(shù)組

compact()----建立一個數(shù)組

array_chunk()----將一個數(shù)組分割成多個

array_merge()----把兩個或多個數(shù)組合并成一個數(shù)組

array_slice()----在數(shù)組中根據(jù)條件取出一段值

array_diff()----返回兩個數(shù)組的差集數(shù)組

array_intersect()----計算數(shù)組的交集

array_search()----在數(shù)組中搜索給定的值

array_splice()----移除數(shù)組的一部分且替代它

array_key_exists()----判斷某個數(shù)組中是否存在指定的key

shuffle()----把數(shù)組中的元素按隨機順序重新排列

array_flip()----交換數(shù)組中的鍵和值

array_reverse()----將原數(shù)組中的元素順序翻轉(zhuǎn),創(chuàng)建新的數(shù)組并返回

array_unique()----移除數(shù)組中重復(fù)的值


請寫出5個常用的unix操作命令

1、Ls?-l

2、tar?-zxvf

3、Touch

4、Cat

5、Mkdir

6、rm


你所知道的設(shè)計模式有哪些?

工廠模式、策略模式、單元素模式、觀察者模式、命令鏈模式


請寫出5個常用的SQL操作關(guān)鍵字

Select?,update,?delete,?insert?into,?

create?,group?by?,order?by


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

獲取網(wǎng)頁內(nèi)容:

$url=”http://www.phpres.com/index.html“;

$str=file_get_contents($url);


MYSQL取得當前時間的函數(shù)是?,格式化日期的函數(shù)是(2分) now(),date()


優(yōu)化MYSQL數(shù)據(jù)庫的方法。(4分,多寫多得)1、選取最適用的字段屬性,盡可能減少定義字段長度,盡量把字段設(shè)置NOT NULL,例如’省份,性別’,最好設(shè)置為ENUM2、使用連接(JOIN)來代替子查詢:3、使用聯(lián)合(UNION)來代替手動創(chuàng)建的臨時表4、事務(wù)處理:5、鎖定表,優(yōu)化事務(wù)處理:6、使用外鍵,優(yōu)化鎖定表7、建立索引: a.格式: (普通索引)-> 創(chuàng)建:CREATE INDEX <索引名> ON tablename (索引字段) 修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段) 創(chuàng)表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段)) (唯一索引)-> 創(chuàng)建:CREATE UNIQUE <索引名> ON tablename (索引字段) 修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段) 創(chuàng)表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段)) (主鍵)-> 它是唯一索引,一般在創(chuàng)建表是建立,格式為:CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])8、優(yōu)化查詢語句


求兩個日期的差數(shù),例如2007-2-5 ~ 2007-3-6 的日期差數(shù)

$begin=strtotime(“2007-2-5″);$end=strtotime(“2007-3-6″);echo ($end-$begin)/(24*3600);


用PHP打印出前一天的時間,打印格式是2007年5月10日22:21:21

Echo date(‘Y-m-d H:i:s’,strtotime(‘-1 day’));


在PHP中error_reporting這個函數(shù)有什么作用?設(shè)置PHP 的報錯級別并返回當前級別。


請寫出常見的排序算法,并用PHP實現(xiàn)冒泡排序,將數(shù)組$a = array()按照從小到大的方式進行排序。

常見的排序算法: 冒泡排序法、快速排序法、簡單選擇排序法、堆排序法、直接插入排序法、希爾排序法、合并排序法。

冒泡排序法的基本思想是:對待排序記錄關(guān)鍵字從后往前(逆序)進行多遍掃描,當發(fā)現(xiàn)相鄰兩個關(guān)鍵字的次序與排序要求的規(guī)則不符時,就將這兩個記錄進行交換。這樣,關(guān)鍵字較小的記錄將逐漸從后面向前面移動,就象氣泡在水中向上浮一樣,所以該算法也稱為氣泡排序法。

// 冒泡排序法

Function mysort($arr){

For($i=0; $i<count($arr); $i++){

For($j=0; $j<count($arr)-1; $j++){

If($arr[$j] > $arr[$j+1]){

$tmp=$arr[$j];

$arr[$j]=$arr[$j+1];

$arr[$j+1]=$tmp;

????????????}

????????}

????}

Return $arr;

}

$arr=array(3,2,1);

print_r(mysort($arr));


寫出匹配URL的正則表達式.

/^[a-zA-z]+:\/\/(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?/



請用正則表達式(Regular Expression)寫一個函數(shù)驗證電子郵件的格式是否正確。if(isset($_POST['action']) && $_POST['action']==’submitted’){ $email=$_POST['email']; if(!preg_match(“/^(?:w+.?)*w+@(?:w+.?)*w+$/”,$email)){ echo “電子郵件檢測失敗”; }else{ echo “電子郵件檢測成功”; }}


請寫一個函數(shù)驗證電子郵件的格式是否正確

function checkemail($email){

echo preg_match(‘/^[\w]+@[\w]+[\.]([\w]+)$/’,$email)?’email格式正確‘:’email格式不正確‘;

}



使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對象可以是一個有序數(shù)組

//二分查找(數(shù)組里查找某個元素)

function bin_sch($array, $low, $high, $k){

if ($low <= $high){

$mid = intval(($low+$high)/2);

if ($array[$mid] == $k){

return $mid;

}elseif ($k < $array[$mid]){

return bin_sch($array, $low, $mid-1, $k);

}else{

return bin_sch($array, $mid+1, $high, $k);

}

}

return -1;

}



JS表單彈出對話框函數(shù)是?獲得輸入焦點函數(shù)是? (2分)彈出對話框: alert(),prompt(),confirm()獲得輸入焦點focus()

JS的轉(zhuǎn)向函數(shù)是?怎么引入一個外部JS文件?(2分) window.location.href,

<script type="text/javascript" src="hello.js"></script>


查詢出年齡介于20歲到30歲之間的用戶

Select * from user where age>20 and age<30


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

function my_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;

?????}


寫一個函數(shù),盡可能高效的,從一個標準url 里取出文件的擴展名

例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php

答案1:

function getExt($url){

$arr = parse_url($url);

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

$ext = explode(“.”,$file);

return $ext[1];

}

答案2:

function getExt($url) {

$url = basename($url);

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

$pos2 = strpos($url,”?”);

if(strstr($url,”?”)){

Return substr($url,$pos1 + 1,$pos2 – $pos1 – 1);

} else {

return substr($url,$pos1);

}

}


把John 新增到 users 陣列?

$users[] = ‘john’; ??array_push($users,‘john’);


從表login中選出name字段包含admin的前10條結(jié)果所有信息的sql語句

Select *from login where name like?'%admin%' limit 0,10;

寫出發(fā)貼數(shù)最多的十個人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分) SELECT * FROM `members` ORDER BY posts DESC limit 0,10;

使用php寫一段簡單查詢,查出所有姓名為“張三”的內(nèi)容并打印出來 (2分)  表名User  Name Tel Content Date  張三13333663366 大專畢業(yè) 2006-10-11  張三13612312331 本科畢業(yè) 2006-10-15  張四021-55665566 中專畢業(yè) 2006-10-15  請根據(jù)上面的題目完成代碼: $mysql_db=mysql_connect("local","root","pass");

  @mysql_select_db("DB",$mysql_db);

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

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

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

}

Pdo

Try{

$dsn = "mysql:host=localhost;dbname=user";

$pdo = new PDO($dsn,'root','123456');

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

$pdo->query('set names utf8');

$sql = "SELECT * FROM user WHERE name='張三'";

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

Foreach($result as $v){

Echo $v['tel'].$v['content'].$v['date'];

}

}catch(PDOException $e){

Echo $e->getCode().':'.$e->getMessage();

}

Mysqli寫法:

$mysqli = new mysqli('localhost','root','123456','user');

If(mysqli_connect_errno()){

Die('連接數(shù)據(jù)庫失敗,'.mysqli_connect_error());

}

$mysqli->set_charset('utf8');

$result = $mysqli->query("SELECT * FROM user WHERE name='張三'");

If($result && $result->affected_row()){

While($row = $result->fetch_object()){

Echo $row->tel.$row->content.$row->date;

}

}


寫出以下程序的輸出結(jié)果(1分)  <?php

$b=201;  $c=40; $a=$b>$c?4:5;  echo $a;  ?>答:4

檢測一個變量是否有設(shè)置的函數(shù)是否?是否為空的函數(shù)是?(2分) isset($str),empty($str);

編寫一個在線留言本,實現(xiàn)用戶的在線留言功能,留言信息存儲到數(shù)據(jù)庫?

假設(shè)現(xiàn)在有數(shù)據(jù)庫:test表:mess字段:id,name,message

[if !supportLists]1、[endif]html頁面,填寫留言:

<form ?method="post" action="post.php">

留言者:<input type="text" name="name" />

留言內(nèi)容:<input type="text" name="message" />

<input type="submit" value="提交" />

</form>

[if !supportLists]2、[endif]post.php頁面,處理留言:

$name = $_POST['name'];

$message = $_POST['message'];

Try{

$dsn = ''mysql:host=localhost;dbname=test;

$pdo = new PDO($dsn,'root','112233');

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

$pdo->query('set names utf8');

$sql = "insert into test(name,message) values('$name','$message')";

$result = $pdo->exec($sql);

If($result){

Echo ‘留言成功’;

}else{

Echo '留言失敗';

}

}catch(PDOException $e){

Echo $e->getCode().' : '.$e->getMessage();

}



請列出3PHP中的預(yù)定義全局變量

1、$_SESSION

2、$_COOKIE

3、$_SERVER

4、$_GET

5、$_POST



寫一個函數(shù)實現(xiàn)字符串翻轉(zhuǎn)

1、Strrev()

2、自己寫:

Function?str($a){

$len=strlen($a);

$b=”";

For($i=$len-1;$i>=0;$i–){

$b.=$a[$i];

}

Return?$b;

}



$sum=0;????????for($i=0;$i<=1000;$i++){??????????if($i%3==0){??????????????$sum+=$i;??????????} ?????????}????????echo $sum;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內(nèi)容