當(dāng)前位置:首頁(yè)>職場(chǎng)>php遇到的面試題(100個(gè)常見(jiàn)的PHP)
發(fā)布時(shí)間:2024-01-19閱讀(24)
PHP 是一種基于腳本的 web 語(yǔ)言,開(kāi)發(fā)者可以動(dòng)態(tài)的創(chuàng)建網(wǎng)頁(yè),今天小編就來(lái)說(shuō)說(shuō)關(guān)于php遇到的面試題?下面更多詳細(xì)答案一起來(lái)看看吧!

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。
推薦使用版本 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)的方式是:
<?php [ --- PHP code---- ] ?> and <? [--- PHP code ---] ?>
將輸出直接顯示給瀏覽器,我們必須使用特殊標(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)?PHP 是一種服務(wù)器端語(yǔ)言,而 Javascript 是一種瀏覽器語(yǔ)言。但是,我們可以交換變量,因?yàn)?PHP 可以生成將由瀏覽器執(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 腳本顯示文本?可以使用以下兩種方法:
<!--?php echo "Method 1"; print "Method 2"; ?-->
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ù):
<!--?php $database = mysqli_connect("HOST", "USER_NAME", "PASSWORD"); mysqli_select_db($database,"DATABASE_NAME"); ?-->
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)行如下修改:
<!--?php function testFunction() { static $testVariable = 1; echo $testVariable; $testVariable ; } testFunction(); //1 testFunction(); //2 testFunction(); //3 ?-->
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 則為 TRUE) ; !== 表示 不全等 ( 如果 $a 不完全等于 $b 則為 TRUE).
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)求,而是在插入或更新后重置值。
喜歡我的文章就關(guān)注我吧,持續(xù)更新中.........
歡迎分享轉(zhuǎn)載→http://m.avcorse.com/read-33043.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號(hào)-5 TXT地圖HTML地圖XML地圖