本文小編為大家詳細(xì)介紹“常見(jiàn)的PHP面試題有哪些”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“常見(jiàn)的PHP面試題有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
堅(jiān)守“ 做人真誠(chéng) · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價(jià)值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都護(hù)欄打樁機(jī)小微創(chuàng)業(yè)公司專業(yè)提供成都定制網(wǎng)站營(yíng)銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺(jué)設(shè)計(jì)、底層架構(gòu)、網(wǎng)頁(yè)布局、功能開(kāi)發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。
100 個(gè)常見(jiàn)的 PHP 面試題
1) PHP是什么?
PHP是一種基于腳本的web語(yǔ)言,開(kāi)發(fā)者可以動(dòng)態(tài)的創(chuàng)建網(wǎng)頁(yè)。
2) PHP的全稱?
Hypertext Preprocessor(超文本預(yù)處理器)。
3) PHP與哪些編程語(yǔ)言相似?
PHP語(yǔ)法類似于Perl和C。
5) 實(shí)際使用的PHP是哪個(gè)版本?
推薦使用版本7。
6) 如何從命令行執(zhí)行PHP腳本?
在命令行界面(CLI),指定要執(zhí)行的腳本的文件名,如下所示:
php script.php
7) 如何從命令行界面運(yùn)行交互式PHP Shell?
將PHP CLI程序與-a選項(xiàng)一起使用,如下所示:
php -a
8) 正確開(kāi)始和結(jié)束PHP代碼塊的最常見(jiàn)的兩種方式是什么?
開(kāi)始和結(jié)束PHP腳本的兩種最常見(jiàn)的方式是:
and [--- PHP code ---] ?>
9) 如何直接將輸出顯示給瀏覽器?
將輸出直接顯示給瀏覽器,我們必須使用特殊標(biāo)記<?=and?>。
11) PHP是否支持多重繼承?
PHP只支持單繼承。PHP的類使用關(guān)鍵字extends
繼承另一個(gè)類
12) 使用final
修飾的類和方法代表什么意思?
final
是在PHP5版本引入的,它修飾的類不允許被繼承,它修飾的方法不允許被重寫(xiě)。
13) PHP中如何比較兩個(gè)對(duì)象?
在PHP中,我們可以使用運(yùn)算符==
來(lái)比較兩個(gè)對(duì)象是否為同一個(gè)類的實(shí)例,并且擁有相同的屬性和屬性值。
還可以是使用運(yùn)算符===
來(lái)比較兩個(gè)對(duì)象是否引用了同一類的同一實(shí)例。
14) PHP和HTML是如何交互的?
可以通過(guò)PHP腳本生成HTML,還可以將信息從HTML傳遞到PHP。
15) 通過(guò)表單或URL傳遞值時(shí)需要哪種類型的操作?
通過(guò)表單或URL傳遞值,則需要使用htmlspecialchars()
和urlencode()
對(duì)它們進(jìn)行編碼和解碼。
16) PHP和Javascript是如何交互的?
PHP和Javascript無(wú)法直接進(jìn)行交互,因?yàn)镻HP是一種服務(wù)器端語(yǔ)言,而Javascript是一種瀏覽器語(yǔ)言。但是,我們可以交換變量,因?yàn)镻HP可以生成將由瀏覽器執(zhí)行的Javascript代碼,并且可以通過(guò)URL將特定的變量傳遞回PHP。
17) PHP處理圖片需要添加什么擴(kuò)展?
需要GD庫(kù)來(lái)執(zhí)行處理圖片功能。
18) 函數(shù)imagetypes()
的功能?
imagetypes()
給出當(dāng)前版本的GD-PHP支持的圖像格式和類型。
19)獲取圖片屬性(size, width, 和 height)的函數(shù)是什么?
獲取圖片大小size:getimagesize();獲取圖片寬度width:imagesx();獲取圖片高度height:imagesy()。
20) include()
和 require()
在執(zhí)行失敗的情況下有什么不同?
include()
將會(huì)產(chǎn)生一個(gè)警告,不影響后續(xù)程序的執(zhí)行。require()
將會(huì)產(chǎn)生一個(gè)致命錯(cuò)誤,后續(xù)程序停止執(zhí)行。
21) require() 和 require_once() 之間的主要區(qū)別是?
require() 和 require_once() 執(zhí)行同樣的任務(wù),除了第二個(gè)函數(shù)在執(zhí)行前檢查 PHP腳本是否已經(jīng)包含。
(與include_once() 和 include() 相同)
22) 如何使用 PHP 腳本顯示文本?
可以使用以下兩種方法:
23) 如何使用 PHP 顯示變量信息并使人類可讀?
為了能夠顯示人類可讀的結(jié)果,我們使用了 print_r() 。
24) 如何為 PHP 腳本設(shè)置無(wú)限執(zhí)行時(shí)間?
在腳本開(kāi)始處添加 set_time_limit(0) 設(shè)置為無(wú)限執(zhí)行時(shí)間,以避免 PHP 錯(cuò)誤“超過(guò)最大執(zhí)行時(shí)間”。也可以在 php.ini 文件中指定它。
25) PHP 錯(cuò)誤 ‘Parse error in PHP - unexpected T_variable at line x’ 意思是?
這是一個(gè) PHP 語(yǔ)法錯(cuò)誤,表示 x 行的錯(cuò)誤會(huì)停止解析和執(zhí)行程序。
26) 如何將數(shù)據(jù)導(dǎo)出到 Excel 文件中?
最常見(jiàn)和常用的方法是將數(shù)據(jù)轉(zhuǎn)換為Excel支持的格式。例如,可以編寫(xiě) .csv 文件,例如選擇逗號(hào)作為字段之間的分隔符,然后使用 Excel 打開(kāi)文件。
27) file_get_contents() 函數(shù)的作用是?
file_get_contents() 可讀取文件并將其存儲(chǔ)到字符串變量中。
28) 如何使用 PHP 腳本 連接 MySQL 數(shù)據(jù)庫(kù)?
為了連接到 MySQL 數(shù)據(jù)庫(kù),必須使用 mysql_connect() 函數(shù):
29) mysql_pconnect() 函數(shù)的用途為?
mysql_pconnect() 函數(shù)確保與數(shù)據(jù)庫(kù)的持久連接, 這意味著 PHP 腳本結(jié)束時(shí)連接不會(huì)關(guān)閉。
PHP7.0 及以上版本已不支持該函數(shù)。
30) 如何在 PHP 中處理 MySQL 的結(jié)果集?
可以使用 mysqli_fetch_array, mysqli_fetch_assoc, mysqli_fetch_object or mysqli_fetch_row 函數(shù)處理。
31) 如何知曉結(jié)果集返回的行數(shù)?
mysqli_num_rows() 函數(shù)返回了結(jié)果集的行數(shù)。
32) 哪個(gè)函數(shù)為我們提供了查詢所影響的條數(shù)?
mysqli_affected_rows() 返回受SQL查詢影響的條目數(shù)。
33) mysqli_fetch_object() 和 mysqli_fetch_array() 函數(shù)的區(qū)別在于?
mysqli_fetch_object() 函數(shù)收集第一個(gè)單個(gè)匹配記錄,而 mysqli_fetch_array() 從表中收集所有匹配記錄。
34) 如何使用 GET 方法訪問(wèn)通過(guò) URL 發(fā)送的數(shù)據(jù)?
要訪問(wèn)通過(guò) GET 方法發(fā)送的數(shù)據(jù),我們使用 $ _GET 數(shù)組,如下所示:
www.url.com?var=value $variable = $_GET["var"]; 現(xiàn)在將包含 'value'
35) 如何使用 POST 方法訪問(wèn)通過(guò) URL 發(fā)送的數(shù)據(jù)?
要訪問(wèn)以這種方式發(fā)送的數(shù)據(jù),請(qǐng)使用 $ _POST 數(shù)組。
想象一下,當(dāng)用戶單擊「提交到帖子」表單時(shí),表單上有一個(gè)名為「var」的表單字段,然后您可以像這樣訪問(wèn)值:
$_POST["var"];
36) 如何檢查給定變量的值為數(shù)字?
可以使用專用函數(shù) is_numeric() 來(lái)檢查它是否為數(shù)字。
37) 如何檢查給定變量的值為字母和數(shù)字字符?
可以使用專用函數(shù) ctype_alnum 來(lái)檢查它是否為字母數(shù)字字符。
38) 如何檢查給定變量是否為空?
如果我們要檢查變量是否具有值,可以使用 empty() 函數(shù)。
39) unlink() 函數(shù)的作用是?
unlink() 函數(shù)專用于文件系統(tǒng)處理。它用于刪除文件。
40) unset() 函數(shù)的作用是 ?
unset() 函數(shù)專用于變量管理。它將使變量變?yōu)槲炊x。
41) 在將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)之前如何轉(zhuǎn)義數(shù)據(jù)?
addslashes 函數(shù)使我們能夠在將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)之前對(duì)其進(jìn)行轉(zhuǎn)義。
42) 如何從字符串中刪除轉(zhuǎn)義字符?
使用 stripslash 函數(shù),我們可以刪除字符串中的轉(zhuǎn)義字符。
43) 我們?nèi)绾巫詣?dòng)轉(zhuǎn)義傳入的數(shù)據(jù)?
我們必須在PHP的配置文件中啟用魔術(shù)引號(hào)項(xiàng)。
44) get_magic_quotes_gpc() 函數(shù)的作用是?
函數(shù) get_magic_quotes_gpc() 告訴我們魔術(shù)引號(hào)是否已打開(kāi)。
45) 是否可以從數(shù)據(jù)中刪除 HTML 標(biāo)簽?
strip_tags() 函數(shù)使我們能夠從HTML標(biāo)簽中清除字符串。
46) 函數(shù)中的靜態(tài)變量有什么用?
靜態(tài)變量?jī)H在函數(shù)中首次定義,并且其值可以在函數(shù)調(diào)用期間進(jìn)行如下修改:
47) 如何定義PHP腳本函數(shù)中可訪問(wèn)的變量??
使用 global 關(guān)鍵字。
48) 如何從函數(shù)中返回值?
使用指令 ‘return $value;’ 。
49) 用于哈希密碼最便捷的哈希方法是什么?
最好使用本身支持幾種哈希算法的 crypt() 或支持比 crypt() 更多變體的函數(shù)hash(),而不是使用常見(jiàn)的哈希算法,如 MD5、SHA1 或 sha256,因?yàn)樗鼈儽徽J(rèn)為是存在安全問(wèn)題的。因此,使用這些算法的哈希密碼可能會(huì)產(chǎn)生漏洞。
50) 哪種加密擴(kuò)展可以生成和驗(yàn)證數(shù)字簽名?
PHP-OpenSSL擴(kuò)展提供了幾種加密操作,包括數(shù)字簽名的生成和驗(yàn)證。
51) 如何在 PHP 腳本中定義常量?
define() 指令允許我們按如下方式定義常量:
define ("ACONSTANT", 123);
52) 如何通過(guò)引用傳遞變量?
為了能夠通過(guò)引用傳遞變量,我們?cè)谧兞壳懊媸褂昧?& 符號(hào),如下所示$var1=&$var2
53) 整數(shù)12和字符串“13”的比較在PHP中是否有效?
“13” 和 12 可以在 PHP 中進(jìn)行比較,因?yàn)樗鼘⑺袃?nèi)容都強(qiáng)制轉(zhuǎn)換為整數(shù)類型。
54) 如何在PHP中強(qiáng)制轉(zhuǎn)換類型?
輸出類型的名稱必須在要強(qiáng)制轉(zhuǎn)換的變量前的括號(hào)中指定,如下所示:
(int), (integer) - 強(qiáng)制轉(zhuǎn)換為整型
(bool), (boolean) - 強(qiáng)制轉(zhuǎn)換為布爾值
(float), (double), (real) - 強(qiáng)制轉(zhuǎn)換為浮點(diǎn)型
(string) - 強(qiáng)制轉(zhuǎn)換為字符串
(array) - 強(qiáng)制轉(zhuǎn)換為數(shù)組
(object) - 強(qiáng)制轉(zhuǎn)換為對(duì)象
55) 條件語(yǔ)句何時(shí)以 endif 結(jié)尾?
當(dāng)最初的if后面跟著:然后是沒(méi)有大括號(hào)的代碼塊時(shí)。
56) PHP中如何使用三元條件運(yùn)算符?
它由三個(gè)表達(dá)式組成:一個(gè)條件和兩個(gè)操作數(shù),它們描述在指定條件為true或false時(shí)應(yīng)執(zhí)行的指令,如下所示:
Expression_1?Expression_2 : Expression_3;
57) 函數(shù) func_num_args() 的作用是什么?
函數(shù) func_num_args() 用于提供傳遞給函數(shù)的參數(shù)數(shù)量
58) 如果變量$ var1設(shè)置為10,而$ var2設(shè)置為字符var1,那么$$ var2的值是多少?
$$var2 包含值10。
59) 通過(guò)::訪問(wèn)類意味著什么?
::用于訪問(wèn)不需要對(duì)象初始化的靜態(tài)方法。
60) 在 PHP 中,對(duì)象是按值傳遞還是按引用傳遞?
對(duì)象按值傳遞。
** 61)是否在類構(gòu)造函數(shù)中隱式調(diào)用了Parent
構(gòu)造函數(shù)?**
不,必須顯式調(diào)用父構(gòu)造函數(shù),如下所示:
parent::constructor($value)
** 62)__sleep
和__wakeup
有什么區(qū)別?**
__sleep
返回所有需要保存的變量的數(shù)組,而__wakeup
檢索它們。
** 63)更快些嗎?**
1-結(jié)合以下兩個(gè)變量:
$ variable1 ='你好';$ variable2 ='世界';$ variable3 = $ variable1.$ variable2;
要么
2- $variable3 = "$variable1$variable2";
$variable3
將包含“你好 世界”。第一個(gè)代碼比第二個(gè)代碼快,特別是對(duì)于大型數(shù)據(jù)集。
** 64)會(huì)話的定義是什么?**
會(huì)話是一個(gè)邏輯對(duì)象,使我們能夠跨多個(gè)PHP頁(yè)面保留臨時(shí)數(shù)據(jù)。
** 65)如何在PHP中啟動(dòng)會(huì)話?**
使用session_start()
函數(shù)可以激活會(huì)話。
** 66)如何傳播會(huì)話ID?**
您可以通過(guò)Cookie
或URL
參數(shù)傳播會(huì)話ID。
** 67)永久性Cookie
的含義是什么?**
永久性cookie
永久存儲(chǔ)在瀏覽器計(jì)算機(jī)上的cookie
文件中。默認(rèn)情況下,cookies
是臨時(shí)的,如果我們關(guān)閉瀏覽器,cookies
將被刪除。
** 68)會(huì)議何時(shí)結(jié)束?**
會(huì)話在PHP腳本完成執(zhí)行時(shí)自動(dòng)結(jié)束,但可以使用session_write_close()
手動(dòng)結(jié)束。
** 69)session_unregister()
和session_unset()
有什么區(qū)別?**
session_unregister()
函數(shù)從當(dāng)前會(huì)話中注銷全局變量,而session_unset()
函數(shù)則釋放所有會(huì)話變量。
** 70)$GLOBALS
是什么意思?**
$GLOBALS
是一個(gè)關(guān)聯(lián)數(shù)組,包括對(duì)當(dāng)前在腳本的全局范圍內(nèi)定義的所有變量的引用。
71) $ _SERVER
是什么意思?
$_SERVER
是一個(gè)包含 Web 服務(wù)器創(chuàng)建信息的數(shù)組,包括了路徑,頭部和腳本位置等。
72)$ _FILES
是什么意思?
$_FILES
是一個(gè)包含通過(guò) HTTP POST 方式上傳到當(dāng)前腳本的項(xiàng)目的數(shù)組。
73)$ _FILES ['userfile'] ['name' ]
和 $ _FILES ['userfile'] ['tmp_name']
有什么區(qū)別
$ _FILES ['userfile'] ['name']
表示客戶端文件的原始名稱,
$_FILES['userfile']['tmp_name']
表示服務(wù)器上存儲(chǔ)的文件的臨時(shí)文件名。
*74) 上傳文件出問(wèn)題時(shí),如何獲取錯(cuò)誤信息 *
$_FILES['userfile']['error']
包括了與上傳文件有關(guān)的錯(cuò)誤代碼。
75)如何更改要上傳的文件大小的最大值?
可通過(guò)更改 php.ini
中的 upload_max_filesize
來(lái)更改要上傳的文件的最大大小。
76)$ _ENV
是什么意思?
通過(guò)環(huán)境方式傳遞給當(dāng)前腳本的變量的數(shù)組。
77)$ _COOKIE
是什么意思?
通過(guò) HTTP Cookies 方式傳遞給當(dāng)前腳本的變量的數(shù)組。
78)變量的作用域是什么意思?
變量的作用域定義了變量的環(huán)境上下文。在大多數(shù)情況下,PHP 變量只有一個(gè)變量域。這一作用域也涵蓋了 include
與 require
的文件。
79)’BITWISE AND’ 運(yùn)算符和 ‘LOGICAL AND’ 運(yùn)算符之間有什么區(qū)別?
$a and $b
- 只有在 $a
和 $b
都為 true
的情況下才為 true
$a & $b
- 把 $a
和 $b
中都為 1 的位設(shè)為 1
80)兩個(gè)主要的字符串運(yùn)算符是什么?
.
運(yùn)算符返回左右兩邊字符串的拼接結(jié)果。 .=
運(yùn)算符將右邊的結(jié)果附加到左邊的參數(shù)上。
81) 數(shù)組運(yùn)算符 ‘===’ 是什么意思?
$a === $b 如果 $a 和 $b 具有相同順序和相同類型的鍵/值對(duì),則為 TRUE 。
82) $a != $b 和 $a !== $b有什么區(qū)別?
!= 表示不等于 ( 如果 $a 不等于 $b 則為T(mén)RUE) ; !== 表示 不全等 ( 如果$a 不完全等于 $b則為T(mén)RUE).
83) 如何確定 PHP 變量是否是某個(gè)類的實(shí)例化對(duì)象?
我們用 instanceof 能夠驗(yàn)證 PHP 變量是否是某個(gè)類的實(shí)例話對(duì)象。
84) goto 語(yǔ)句有什么用?
goto語(yǔ)句可以放置在PHP程序中以啟用跳轉(zhuǎn)。 目標(biāo)由后跟冒號(hào)的標(biāo)簽指向,指令被指定為goto語(yǔ)句,后跟所需的目標(biāo)標(biāo)簽。
85) Exception::getMessage 和 Exception:: getLine有什么區(qū)別?
Exception::getMessage 讓我們得到異常消息, Exception::getLine 讓我們得到發(fā)生異常的行。
86) 表達(dá)式 Exception::__toString 是什么意思?
Exception::__toString 給出異常的字符串表示形式。
87) 如何解析配置文件?
函數(shù) parse_ini_file() 使我們能夠加載在文件名中指定的 ini 文件,并以關(guān)聯(lián)數(shù)組的形式返回其中的設(shè)置。
88) 我們?nèi)绾未_定變量是否已經(jīng)設(shè)置?
布爾函數(shù) isset 確定變量是否已經(jīng)設(shè)置并且該變量不是NULL。
89) 函數(shù) strstr() 和 stristr() 有什么區(qū)別?
字符串函數(shù) strstr(全部字符串, 要查找的字符串) 返回從首次出現(xiàn)到全部字符串結(jié)束的部分字段串。 這個(gè)函數(shù)是區(qū)分大小寫(xiě)的。 stristr() 除了不區(qū)分大小寫(xiě)之外,與 strstr() 完全相同。
90) for 和 foreach 有什么區(qū)別?
for 表示如下:
for (expr1; expr2; expr3)
expr1 在開(kāi)頭執(zhí)行一次。 在每次迭代中,expr2 都會(huì)被評(píng)估。 如果評(píng)估結(jié)果是 TRUE, 循環(huán)繼續(xù), 并執(zhí)行 for 中的語(yǔ)句。 如果評(píng)估結(jié)果是 FALSE, 循環(huán)結(jié)束。expr3 在每次迭代結(jié)束時(shí)進(jìn)行測(cè)試。
但是,foreach提供了一種遍歷數(shù)組的簡(jiǎn)便方法,并且僅與數(shù)組和對(duì)象一起使用。
91) 是否可以提交帶有專用按鈕的表單?
可以使用 document.form.submit() 函數(shù)提交表單。 例如:
92) ereg_replace() 和 eregi_replace()有什么區(qū)別?
函數(shù)eregi_replace() 與 ereg_replace() 相同,只是在匹配字母字符時(shí)忽略大小寫(xiě)區(qū)別。
93) 是否可以保護(hù)查詢字符串中的特殊字符?
是的, 我們使用 urlencode() 函數(shù) 來(lái)保護(hù)特殊字符。
94) PHP 中可能出現(xiàn)的三類錯(cuò)誤是什么?
三類基本錯(cuò)誤類別是: 通知 (非關(guān)鍵錯(cuò)誤)、警告 (嚴(yán)重錯(cuò)誤) 和 致命錯(cuò)誤 (嚴(yán)重錯(cuò)誤)。
95) 字符串 .34 和 .34 有什么區(qū)別
.34 是八進(jìn)制 34 , .34 是十六進(jìn)制 34.
96) 我們?nèi)绾瓮ㄟ^(guò)頁(yè)面之間的導(dǎo)航傳遞變量?
可以使用會(huì)話,cookie 或隱藏的表單字段在 PHP 頁(yè)面之間傳遞變量。
97) 是否可以延長(zhǎng) PHP 腳本的執(zhí)行時(shí)間
使用 set_time_limit(int seconds) 可以延長(zhǎng) PHP 腳本的執(zhí)行時(shí)間。 默認(rèn)限制為30秒。
98) 是否可以銷毀 Cookie ?
是的,可以通過(guò)設(shè)置cookie的過(guò)期時(shí)間來(lái)實(shí)現(xiàn)。
99) PHP中的默認(rèn)會(huì)話時(shí)間是什么?
php中的默認(rèn)會(huì)話時(shí)間是直到瀏覽器關(guān)閉為止。
100) 是否可以在 PHP中 使用 COM 組件?
是的, 可以在框架中提供的 PHP 腳本中集成(分布式)組件對(duì)象模型組件((D)COM)。
101) 解釋是否可以在多個(gè) PHP 項(xiàng)目之間共享單個(gè) memcache 實(shí)例?
是的,可以在多個(gè)項(xiàng)目之間共享一個(gè)Memcache實(shí)例。 Memcache是一個(gè)內(nèi)存存儲(chǔ)空間,您可以在一個(gè)或多個(gè)服務(wù)器上運(yùn)行memcache。您還可以將客戶端配置為與特定實(shí)例集進(jìn)行對(duì)話。因此,您可以在同一主機(jī)上運(yùn)行兩個(gè)不同的Memcache進(jìn)程,但它們是完全獨(dú)立的。除非您已經(jīng)對(duì)數(shù)據(jù)進(jìn)行了分區(qū),否則有必要知道從哪個(gè)實(shí)例獲取數(shù)據(jù)或?qū)?shù)據(jù)放入哪個(gè)實(shí)例。
102) 解釋你對(duì)PHP進(jìn)行更改時(shí)如何更新Memcached?
當(dāng)PHP更改時(shí),您可以通過(guò)以下方式更新Memcached
主動(dòng)清除緩存:進(jìn)行插入或更新時(shí)清除緩存
重置緩存:與第一種方法類似,但不僅僅是刪除鍵并等待下一個(gè)數(shù)據(jù)刷新緩存的請(qǐng)求,而是在插入或更新后重置值。
讀到這里,這篇“常見(jiàn)的PHP面試題有哪些”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。