- 什么是靜態(tài)變量?
如果一個(gè)函數(shù)內(nèi)定義的變量前使用關(guān)鍵字static來(lái)聲明,那么該變量就是靜態(tài)變量。 一般函數(shù)內(nèi)的變量在函數(shù)調(diào)用結(jié)束后,其存儲(chǔ)的數(shù)據(jù)將被清除,所占的內(nèi)存空間也被釋放。而使用靜態(tài)變量時(shí),該變量會(huì)在函數(shù)第一次被調(diào)用時(shí)被初始化,初始化后該變量也不會(huì)被清除,當(dāng)再次調(diào)用該函數(shù)時(shí),這個(gè)靜態(tài)變量不再被初始化,而能保存上次函數(shù)執(zhí)行完后的值??梢哉f(shuō)靜態(tài)變量在所有對(duì)該函數(shù)的調(diào)用之間共享。
- php中函數(shù)傳遞參數(shù)的方式有哪些??jī)烧哂惺裁磪^(qū)別?
按值傳遞和按地址傳遞(或按引用傳遞)
(1)按值傳遞: 待傳遞的變量,與傳遞給函數(shù)之后的變量是存儲(chǔ)在不同的空間中。所以函數(shù)體內(nèi)對(duì)該變量值做的修改,不影響原本的變量值。
(2)按地址傳遞: 使用 & 符號(hào),表明該參數(shù)是以地址的方式傳遞值。并不會(huì)將主程序中的指定數(shù)值或目標(biāo)變量傳遞給函數(shù),而是把該數(shù)值或變量的內(nèi)存儲(chǔ)存區(qū)塊地址導(dǎo)入函數(shù)之中,所以函數(shù)體內(nèi)的該變量和主程序中的該變量在內(nèi)存中是同一個(gè)。函數(shù)體做的修改,直接影響到函數(shù)體外部的該變量的值。
- 什么是遞歸函數(shù)?如何進(jìn)行遞歸調(diào)用?
遞歸函數(shù)其實(shí)就是調(diào)用自身的函數(shù),但是必須滿足以下兩個(gè)條件:
1)在每一次調(diào)用自身時(shí),必須是更接近于最終結(jié)果;
2)必須有一個(gè)確定的遞歸終止條件,不會(huì)造成死循環(huán)。
舉例說(shuō)明:
在實(shí)際工作中往往會(huì)在遍歷文件夾的時(shí)候使用。
如果有個(gè)例子是希望獲取到目錄windows下所有的文件,那么先遍歷windows目錄,如果發(fā)現(xiàn)其中還有文件夾,那么就會(huì)調(diào)用自身,繼續(xù)往下尋找,依次類推,直到遍歷到再也沒有文件夾為止,這也就是意味著遍歷出來(lái)了所有的文件。
- 判斷一個(gè)函數(shù)是否存在?
function_exists( string $function_name ) 如果存在,返回true, 不存在則返回 false。
- func()和@func()之間有什么區(qū)別?
第二個(gè)函數(shù)調(diào)用失敗不會(huì)報(bào)錯(cuò),第一個(gè)會(huì)報(bào)錯(cuò)
- include()和require()函數(shù)的用法和區(qū)別是什么?include_once()和require_once()呢?
include和require出現(xiàn)錯(cuò)誤后的錯(cuò)誤級(jí)別不一樣 include_once()和require_once()在加載之前要判斷是否已經(jīng)導(dǎo)入
- 說(shuō)出前置++和后置++的區(qū)別?
前置++是先將變量增加1,然后在將值賦值給原來(lái)的變量;
后置++是先返回變量的當(dāng)前值,然后再將變量的當(dāng)前值增加1.
- 字符串運(yùn)算符“.”與算術(shù)運(yùn)算符“+”有什么區(qū)別?
當(dāng)“a”“b”之間使用.時(shí)認(rèn)為是連字符。如果兩者間是+的時(shí)候php會(huì)認(rèn)為是一次運(yùn)算。
1)如果+號(hào)兩邊的字符串是數(shù)字組成的,那么會(huì)將字符串自動(dòng)轉(zhuǎn)為整型;
2)如果+號(hào)兩邊是純粹的字母,那么會(huì)輸出0;
3)如果+號(hào)兩邊的字符串是以數(shù)字開頭的,那么會(huì)截取字符串開頭的數(shù)字,然后進(jìn)行運(yùn)算。
- 什么是三目(或三元)運(yùn)算符?
根據(jù)一個(gè)表達(dá)式的結(jié)果在另兩個(gè)表達(dá)式中選擇一個(gè)。
例如: ($a==true) ? 'good':'bad';
- 控制流程語(yǔ)句有哪些?
1:三種程序結(jié)構(gòu) 順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
2:分支: if/esle/esleif/ switch/case/default
3: switch 需要注意的:
case子句中的常量可以是整型、字符串型常量、 或者常量表達(dá)式,不允許是變量。 同一個(gè)switch子句中,case的值不能相同,否則只能取到首次出現(xiàn)case中的值。
4: 循環(huán) for while do...while
do...while 后面必須加入分號(hào)結(jié)尾。
while 和 do...while 的區(qū)別
5:break 和 continue 的區(qū)別。
break可以終止循環(huán)。
continue沒有break強(qiáng)大,只能終止本次循環(huán)而進(jìn)入到下一次循環(huán)中。
轉(zhuǎn)自:http://bbs.itheima.com/forum.php?mod=viewthread&tid=301779&extra=page%3D1