本篇文章給大家整理分享100道常見php面試題(附答案分享),帶你梳理基礎(chǔ)知識,增強你的php知識儲備。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。
相關(guān)推薦:2022年P(guān)HP面試題大匯總(收藏)
100 個常見的 PHP 面試題
1) PHP是什么?
PHP是一種基于腳本的web語言,開發(fā)者可以動態(tài)的創(chuàng)建網(wǎng)頁。
立即學(xué)習(xí)“PHP免費學(xué)習(xí)筆記(深入)”;
2) PHP的全稱?
Hypertext Preprocessor(超文本預(yù)處理器)。
3) PHP與哪些編程語言相似?
PHP語法類似于Perl和C。
5) 實際使用的PHP是哪個版本?
推薦使用版本7。
6) 如何從命令行執(zhí)行PHP腳本?
在命令行界面(CLI),指定要執(zhí)行的腳本的文件名,如下所示:
php script.php
7) 如何從命令行界面運行交互式PHP Shell?
將PHP CLI程序與-a選項一起使用,如下所示:
php -a
8) 正確開始和結(jié)束PHP代碼塊的最常見的兩種方式是什么?
開始和結(jié)束PHP腳本的兩種最常見的方式是:
<?php [ --- PHP code---- ] ?> and <? [--- PHP code ---] ?>
9) 如何直接將輸出顯示給瀏覽器?
將輸出直接顯示給瀏覽器,我們必須使用特殊標(biāo)記。
11) PHP是否支持多重繼承?
PHP只支持單繼承。PHP的類使用關(guān)鍵字extends繼承另一個類
12) 使用final修飾的類和方法代表什么意思?
final是在PHP5版本引入的,它修飾的類不允許被繼承,它修飾的方法不允許被重寫。
13) PHP中如何比較兩個對象?
在PHP中,我們可以使用運算符==來比較兩個對象是否為同一個類的實例,并且擁有相同的屬性和屬性值。
還可以是使用運算符===來比較兩個對象是否引用了同一類的同一實例。
14) PHP和HTML是如何交互的?
可以通過PHP腳本生成HTML,還可以將信息從HTML傳遞到PHP。
15) 通過表單或URL傳遞值時需要哪種類型的操作?
通過表單或URL傳遞值,則需要使用htmlspecialchars()和urlencode()對它們進行編碼和解碼。
16) PHP和Javascript是如何交互的?
PHP和Javascript無法直接進行交互,因為PHP是一種服務(wù)器端語言,而Javascript是一種瀏覽器語言。但是,我們可以交換變量,因為PHP可以生成將由瀏覽器執(zhí)行的Javascript代碼,并且可以通過URL將特定的變量傳遞回PHP。
17) PHP處理圖片需要添加什么擴展?
需要GD庫來執(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() 將會產(chǎn)生一個警告,不影響后續(xù)程序的執(zhí)行。require() 將會產(chǎn)生一個致命錯誤,后續(xù)程序停止執(zhí)行。
21) require() 和 require_once() 之間的主要區(qū)別是?
require() 和 require_once() 執(zhí)行同樣的任務(wù),除了第二個函數(shù)在執(zhí)行前檢查 PHP腳本是否已經(jīng)包含。
(與include_once() 和 include() 相同)
22) 如何使用 PHP 腳本顯示文本?
可以使用以下兩種方法:
<!--?php echo "Method 1"; print "Method 2"; ?-->
23) 如何使用 PHP 顯示變量信息并使人類可讀?
為了能夠顯示人類可讀的結(jié)果,我們使用了 print_r() 。
24) 如何為 PHP 腳本設(shè)置無限執(zhí)行時間?
在腳本開始處添加 set_time_limit(0) 設(shè)置為無限執(zhí)行時間,以避免 PHP 錯誤“超過最大執(zhí)行時間”。也可以在 php.ini 文件中指定它。
25) PHP 錯誤 ‘Parse error in PHP - unexpected T_variable at line x’ 意思是?
這是一個 PHP 語法錯誤,表示 x 行的錯誤會停止解析和執(zhí)行程序。
26) 如何將數(shù)據(jù)導(dǎo)出到 Excel 文件中?
最常見和常用的方法是將數(shù)據(jù)轉(zhuǎn)換為Excel支持的格式。例如,可以編寫 .csv 文件,例如選擇逗號作為字段之間的分隔符,然后使用 Excel 打開文件。
27) file_get_contents() 函數(shù)的作用是?
file_get_contents() 可讀取文件并將其存儲到字符串變量中。
28) 如何使用 PHP 腳本 連接 MySQL 數(shù)據(jù)庫?
為了連接到 MySQL 數(shù)據(jù)庫,必須使用 mysql_connect() 函數(shù):
<!--?php $database = mysqli_connect("HOST", "USER_NAME", "PASSWORD"); mysqli_select_db($database,"DATABASE_NAME"); ?-->
29) mysql_pconnect() 函數(shù)的用途為?
mysql_pconnect() 函數(shù)確保與數(shù)據(jù)庫的持久連接, 這意味著 PHP 腳本結(jié)束時連接不會關(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) 哪個函數(shù)為我們提供了查詢所影響的條數(shù)?
mysqli_affected_rows() 返回受SQL查詢影響的條目數(shù)。
33) mysqli_fetch_object() 和 mysqli_fetch_array() 函數(shù)的區(qū)別在于?
mysqli_fetch_object() 函數(shù)收集第一個單個匹配記錄,而 ?mysqli_fetch_array() 從表中收集所有匹配記錄。
34) 如何使用 GET 方法訪問通過 URL 發(fā)送的數(shù)據(jù)?
要訪問通過 GET 方法發(fā)送的數(shù)據(jù),我們使用 $ _GET 數(shù)組,如下所示:
www.url.com?var=value $variable = $_GET["var"]; 現(xiàn)在將包含 'value'
35) 如何使用 POST 方法訪問通過 URL 發(fā)送的數(shù)據(jù)?
要訪問以這種方式發(fā)送的數(shù)據(jù),請使用 $ _POST 數(shù)組。
想象一下,當(dāng)用戶單擊「提交到帖子」表單時,表單上有一個名為「var」的表單字段,然后您可以像這樣訪問值:
$_POST["var"];
36) 如何檢查給定變量的值為數(shù)字?
可以使用專用函數(shù) is_numeric() 來檢查它是否為數(shù)字。
37) 如何檢查給定變量的值為字母和數(shù)字字符?
可以使用專用函數(shù) ctype_alnum 來檢查它是否為字母數(shù)字字符。
38) 如何檢查給定變量是否為空?
如果我們要檢查變量是否具有值,可以使用 empty() 函數(shù)。
39) unlink() 函數(shù)的作用是?
unlink() 函數(shù)專用于文件系統(tǒng)處理。它用于刪除文件。
40) unset() 函數(shù)的作用是 ?
unset() 函數(shù)專用于變量管理。它將使變量變?yōu)槲炊x。
41) 在將數(shù)據(jù)存儲到數(shù)據(jù)庫之前如何轉(zhuǎn)義數(shù)據(jù)?
addslashes 函數(shù)使我們能夠在將數(shù)據(jù)存儲到數(shù)據(jù)庫之前對其進行轉(zhuǎn)義。
42) 如何從字符串中刪除轉(zhuǎn)義字符?
使用 stripslash 函數(shù),我們可以刪除字符串中的轉(zhuǎn)義字符。
43) 我們?nèi)绾巫詣愚D(zhuǎn)義傳入的數(shù)據(jù)?
我們必須在PHP的配置文件中啟用魔術(shù)引號項。
44) get_magic_quotes_gpc() 函數(shù)的作用是?
函數(shù) get_magic_quotes_gpc() 告訴我們魔術(shù)引號是否已打開。
45) 是否可以從數(shù)據(jù)中刪除 HTML 標(biāo)簽?
strip_tags() 函數(shù)使我們能夠從HTML標(biāo)簽中清除字符串。
46) 函數(shù)中的靜態(tài)變量有什么用?
靜態(tài)變量僅在函數(shù)中首次定義,并且其值可以在函數(shù)調(diào)用期間進行如下修改:
<!--?php function testFunction() { static $testVariable = 1; echo $testVariable; $testVariable++; } testFunction(); //1 testFunction(); //2 testFunction(); //3 ?-->
47) 如何定義PHP腳本函數(shù)中可訪問的變量??
使用 global 關(guān)鍵字。
48) 如何從函數(shù)中返回值?
使用指令 ‘return $value;’ 。
49) 用于哈希密碼最便捷的哈希方法是什么?
最好使用本身支持幾種哈希算法的 crypt() 或支持比 crypt() 更多變體的函數(shù)hash(),而不是使用常見的哈希算法,如 MD5、SHA1 或 sha256,因為它們被認為是存在安全問題的。因此,使用這些算法的哈希密碼可能會產(chǎn)生漏洞。
50) 哪種加密擴展可以生成和驗證數(shù)字簽名?
PHP-OpenSSL擴展提供了幾種加密操作,包括數(shù)字簽名的生成和驗證。
51) 如何在 PHP 腳本中定義常量?
define() 指令允許我們按如下方式定義常量:
define ("ACONSTANT", 123);
52) 如何通過引用傳遞變量?
為了能夠通過引用傳遞變量,我們在變量前面使用了 & 符號,如下所示$var1=&$var2
53) 整數(shù)12和字符串“13”的比較在PHP中是否有效?
“13” 和 12 可以在 PHP 中進行比較,因為它將所有內(nèi)容都強制轉(zhuǎn)換為整數(shù)類型。
54) 如何在PHP中強制轉(zhuǎn)換類型?
輸出類型的名稱必須在要強制轉(zhuǎn)換的變量前的括號中指定,如下所示:
(int), (integer) - 強制轉(zhuǎn)換為整型
(bool), (boolean) - 強制轉(zhuǎn)換為布爾值
(float), (double), (real) - 強制轉(zhuǎn)換為浮點型
(string) - 強制轉(zhuǎn)換為字符串
(array) - 強制轉(zhuǎn)換為數(shù)組
(object) - 強制轉(zhuǎn)換為對象
55) 條件語句何時以 endif 結(jié)尾?
當(dāng)最初的if后面跟著:然后是沒有大括號的代碼塊時。
56) PHP中如何使用三元條件運算符?
它由三個表達式組成:一個條件和兩個操作數(shù),它們描述在指定條件為true或false時應(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) 通過::訪問類意味著什么?
::用于訪問不需要對象初始化的靜態(tài)方法。
60) 在 PHP 中,對象是按值傳遞還是按引用傳遞?
對象按值傳遞。
** 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é)合以下兩個變量:
$ variable1 ='你好';$ variable2 ='世界';$ variable3 = $ variable1.$ variable2;
要么
2- $variable3 = "$variable1$variable2";
$variable3將包含“你好 世界”。第一個代碼比第二個代碼快,特別是對于大型數(shù)據(jù)集。
** 64)會話的定義是什么?**
會話是一個邏輯對象,使我們能夠跨多個PHP頁面保留臨時數(shù)據(jù)。
** 65)如何在PHP中啟動會話?**
使用session_start()函數(shù)可以激活會話。
** 66)如何傳播會話ID?**
您可以通過Cookie或URL參數(shù)傳播會話ID。
** 67)永久性Cookie的含義是什么?**
永久性cookie永久存儲在瀏覽器計算機上的cookie文件中。默認情況下,cookies是臨時的,如果我們關(guān)閉瀏覽器,cookies將被刪除。
** 68)會議何時結(jié)束?**
會話在PHP腳本完成執(zhí)行時自動結(jié)束,但可以使用session_write_close()手動結(jié)束。
** 69)session_unregister()和session_unset()有什么區(qū)別?**
session_unregister()函數(shù)從當(dāng)前會話中注銷全局變量,而session_unset()函數(shù)則釋放所有會話變量。
** 70)$GLOBALS是什么意思?**
$GLOBALS是一個關(guān)聯(lián)數(shù)組,包括對當(dāng)前在腳本的全局范圍內(nèi)定義的所有變量的引用。
71) $ _SERVER 是什么意思?
$_SERVER ?是一個包含 Web 服務(wù)器創(chuàng)建信息的數(shù)組,包括了路徑,頭部和腳本位置等。
72)$ _FILES 是什么意思?
$_FILES 是一個包含通過 HTTP POST 方式上傳到當(dāng)前腳本的項目的數(shù)組。
73)$ _FILES ['userfile'] ['name' ] 和 $ _FILES ['userfile'] ['tmp_name'] 有什么區(qū)別
$ _FILES ['userfile'] ['name'] ?表示客戶端文件的原始名稱,
$_FILES['userfile']['tmp_name'] 表示服務(wù)器上存儲的文件的臨時文件名。
*74) 上傳文件出問題時,如何獲取錯誤信息 *
$_FILES['userfile']['error'] ?包括了與上傳文件有關(guān)的錯誤代碼。
75)如何更改要上傳的文件大小的最大值?
可通過更改 ?php.ini 中的 upload_max_filesize 來更改要上傳的文件的最大大小。
76)$ _ENV 是什么意思?
通過環(huán)境方式傳遞給當(dāng)前腳本的變量的數(shù)組。
77)$ _COOKIE 是什么意思?
通過 HTTP Cookies 方式傳遞給當(dāng)前腳本的變量的數(shù)組。
78)變量的作用域是什么意思?
變量的作用域定義了變量的環(huán)境上下文。在大多數(shù)情況下,PHP 變量只有一個變量域。這一作用域也涵蓋了 include 與 require 的文件。
79)’BITWISE AND’ 運算符和 ‘LOGICAL AND’ 運算符之間有什么區(qū)別?
$a and $b - ?只有在 $a 和 $b 都為 true 的情況下才為 true
$a & $b - ?把 $a 和 $b 中都為 1 的位設(shè)為 1
80)兩個主要的字符串運算符是什么?
. 運算符返回左右兩邊字符串的拼接結(jié)果。 .= 運算符將右邊的結(jié)果附加到左邊的參數(shù)上。
81) 數(shù)組運算符 ?‘===’ ?是什么意思?
$a === $b 如果 $a 和 $b 具有相同順序和相同類型的鍵/值對,則為 TRUE 。
82) ?$a != $b 和 $a !== $b有什么區(qū)別?
!= ?表示不等于 ( 如果 $a 不等于 $b 則為TRUE) ; !== 表示 不全等 ( 如果$a 不完全等于 $b則為TRUE).
83) 如何確定 PHP 變量是否是某個類的實例化對象?
我們用 ?instanceof 能夠驗證 PHP 變量是否是某個類的實例話對象。
84) goto 語句有什么用?
goto語句可以放置在PHP程序中以啟用跳轉(zhuǎn)。 目標(biāo)由后跟冒號的標(biāo)簽指向,指令被指定為goto語句,后跟所需的目標(biāo)標(biāo)簽。
85) Exception::getMessage 和 Exception:: getLine有什么區(qū)別?
Exception::getMessage 讓我們得到異常消息, ?Exception::getLine 讓我們得到發(fā)生異常的行。
86) 表達式 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é)束的部分字段串。 這個函數(shù)是區(qū)分大小寫的。 stristr() 除了不區(qū)分大小寫之外,與 strstr() 完全相同。
90) for 和 foreach 有什么區(qū)別?
for 表示如下:
for (expr1; expr2; expr3)
expr1 在開頭執(zhí)行一次。 在每次迭代中,expr2 都會被評估。 如果評估結(jié)果是 TRUE, 循環(huán)繼續(xù), 并執(zhí)行 for 中的語句。 如果評估結(jié)果是 FALSE, 循環(huán)結(jié)束。expr3 在每次迭代結(jié)束時進行測試。
但是,foreach提供了一種遍歷數(shù)組的簡便方法,并且僅與數(shù)組和對象一起使用。
91) 是否可以提交帶有專用按鈕的表單?
可以使用 document.form.submit() 函數(shù)提交表單。 例如:
92) ?ereg_replace() 和 eregi_replace()有什么區(qū)別?
函數(shù)eregi_replace() 與 ereg_replace() 相同,只是在匹配字母字符時忽略大小寫區(qū)別。
93) 是否可以保護查詢字符串中的特殊字符?
是的, 我們使用 urlencode() 函數(shù) 來保護特殊字符。
94) PHP 中可能出現(xiàn)的三類錯誤是什么?
三類基本錯誤類別是: 通知 (非關(guān)鍵錯誤)、警告 (嚴重錯誤) 和 致命錯誤 (嚴重錯誤)。
95) 字符串 .34 和 .34 有什么區(qū)別
.34 是八進制 34 , .34 是十六進制 34.
96) 我們?nèi)绾瓮ㄟ^頁面之間的導(dǎo)航傳遞變量?
可以使用會話,cookie 或隱藏的表單字段在 PHP 頁面之間傳遞變量。
97) 是否可以延長 PHP 腳本的執(zhí)行時間
使用 set_time_limit(int seconds) 可以延長 PHP 腳本的執(zhí)行時間。 默認限制為30秒。
98) 是否可以銷毀 Cookie ?
是的,可以通過設(shè)置cookie的過期時間來實現(xiàn)。
99) PHP中的默認會話時間是什么?
php中的默認會話時間是直到瀏覽器關(guān)閉為止。
100) 是否可以在 PHP中 使用 COM 組件?
是的, 可以在框架中提供的 PHP 腳本中集成(分布式)組件對象模型組件((D)COM)。
101) 解釋是否可以在多個 PHP 項目之間共享單個 memcache 實例?
是的,可以在多個項目之間共享一個Memcache實例。 Memcache是一個內(nèi)存存儲空間,您可以在一個或多個服務(wù)器上運行memcache。您還可以將客戶端配置為與特定實例集進行對話。因此,您可以在同一主機上運行兩個不同的Memcache進程,但它們是完全獨立的。除非您已經(jīng)對數(shù)據(jù)進行了分區(qū),否則有必要知道從哪個實例獲取數(shù)據(jù)或?qū)?shù)據(jù)放入哪個實例。
102) 解釋你對PHP進行更改時如何更新Memcached?
當(dāng)PHP更改時,您可以通過以下方式更新Memcached
重置緩存: 與第一種方法類似,但不僅僅是刪除鍵并等待下一個數(shù)據(jù)刷新緩存的請求,而是在插入或更新后重置值。
原文地址:https://www.guru99.com/php-interview-questions-answers.html
譯文地址:https://learnku.com/php/t/38272
推薦學(xué)習(xí):《PHP視頻教程》
以上就是100道常見PHP面試題(附解析),增強你的知識儲備!的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
PHP怎么學(xué)習(xí)?PHP怎么入門?PHP在哪學(xué)?PHP怎么學(xué)才快?不用擔(dān)心,這里為大家提供了PHP速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號