這篇文章向大家介紹七道PHP經典面試題(附答案),有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
1.合併兩個陣列有幾種方式,試比較它們的異同
方式:
#1、array_merge()
2、' '
3、array_merge_recursive
異同:
array_merge 簡單的合併數組
array_merge_recursive 合併兩個數組,如果數組中有完全一樣的數據,將它們遞歸併
array_combine 和' ' :合併兩個數組,前者的值作為新數組的鍵
2.請寫一個函數來檢查使用者提交的資料是否為整數(不區分資料類型,可以為二進位、八進位、十進位、十六進位數字)
#「其實主要還是is_int 和floor這個方法
if(!is_numeric($jp_total)||strpos($jp_total,".")!==false){ echo "不是整数"; }else{ echo "是整数"; }
3. PHP 的strtolower () 和strtoupper () 函數在安裝非中文系統的伺服器下可能會導致將漢字轉換為亂碼,請寫兩個替代的函數實作相容Unicode 文字的字串大小寫轉換
答:原因是:中文是由多字節組成的,而只有英文系統的單個英文字符只有一個字節,所以該系統把中文的每一個字節都做了strtolower () 處理,改變後的中文字節拼接在一起就成了亂碼(新生成的編碼映射對應的字符可能就不是中文了)
#手動解決:用str_split (string string,intstring,intsplit_length = 1) 按每個位元組切割,像中文能切割成三個位元組。將辨識到的位元組若是英文字母則進行轉換。
<?php function mystrtoupper($a){ $b = str_split($a, 1); $r = ''; foreach($b as $v){ $v = ord($v); if($v >= 97 && $v<= 122){ $v -= 32; } $r .= chr($v); } return $r; } $a = 'a中你继续F@#$%^&*(BMDJFDoalsdkfjasl'; echo 'origin string:'.$a." "; echo 'result string:'; $r = mystrtoupper($a); var_dump($r);
4. PHP 的is_writeable () 函數存在Bug,無法準確判斷一個目錄/ 檔案是否可寫,請寫一個函數來判斷目錄/ 檔案是否絕對可寫
答案:其中bug 存在兩個方面,
1、在windowns 中,當檔案只有唯讀屬性時,is_writeable () 函數才會傳回false,當傳回true 時,該檔案不一定是可寫的。
如果是目錄,在目錄中新建文件並透過開啟文件來判斷;
如果是文件,可以透過開啟文件(fopen),來測試文件是否可寫入。
2、在 Unix 中,當 php 設定檔中開啟 safe_mode 時 (safe_mode=on),is_writeable () 同樣不可用。
讀取設定檔是否 safe_mode 是否開啟。
/** * Tests for file writability * * is_writable() returns TRUE on Windows servers when you really can't write to * the file, based on the read-only attribute. is_writable() is also unreliable * on Unix servers if safe_mode is on. * * @access private * @return void */ if ( ! function_exists('is_really_writable')) { function is_really_writable($file){ // If we're on a Unix server with safe_mode off we call is_writable if (DIRECTORY_SEPARATOR == '/' AND @ini_get("safe_mode") == FALSE){ return is_writable($file); } // For windows servers and safe_mode "on" installations we'll actually // write a file then read it. Bah... if (is_dir($file)){ $file = rtrim($file, '/').'/'.md5(mt_rand(1,100).mt_rand(1,100)); if (($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE){ return FALSE; } fclose($fp); @chmod($file, DIR_WRITE_MODE); @unlink($file); return TRUE; } elseif ( ! is_file($file) OR ($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE) { return FALSE; } fclose($fp); return TRUE; } }
5. PHP 的chmod () 函數存在Bug,無法保證設定成功,請寫一個函數在指定路徑下建立目錄/ 檔案並確保可以正確設定權限遮罩
答案:我也找不到答案
6. PHP 處理上傳檔案資訊陣列中的檔案類型$_FILES ['type'] 由客戶端瀏覽器提供,有可能是駭客偽造的訊息,請寫一個函數來確保使用者上傳的圖片檔案類型真實可靠
答案:用getimagesize 來判斷上傳圖片的類型比$_FILES 函數的type 更可靠
同一個文件,使用不同的瀏覽器php 返回的type 類型是不一樣的,由瀏覽器提供type 類型的話,
就有可能被駭客利用向伺服器提交一個偽裝撐圖片後綴的可執行檔。
可以透過getimagesize () 函數來判斷上傳的檔案類型,如果是頭像檔案會傳回這樣的一個陣列
Array( [0] => 331 [1] => 234 [2] => 3 [3] => width="331" height="234" [bits] => 8 [mime] => image/png );
如果透過getimagesize () 函數傳回的是這樣的陣列說明上傳的是頭像檔案。其中索引為2 的表示類型
1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF( motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 =JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM,
你可以透過這個再去限制上傳的頭像類型
<?php $file=$_FILES['file']; if(!empty($file)) { var_dump($file); var_dump(getimagesize($file["tmp_name"])); } ?>
7. PHP 透過對資料的URL 編碼來實現與Javascript 的資料交互,但是對於部分特殊字元的編解碼與Javascript 的規則不盡相同,請具體說明這種差異,並針對UTF-8 字元集的數據,寫出PHP 的編解碼函數和Javascript 的編解碼函數,確保PHP 編碼資料可以被Javascript 正確解碼、Javascript 編碼的資料可以被PHP 正確解碼
#答案:
<?php $str = '思源博客siyuantlw/tlw/sy/俺只是一个打酱油的'; $str = iconv("GB2312",'UTF-8',$str); $str = urlencode($str); ?>
/ /js decodeURIComponent 看起來對GB2312 編碼的格式不識別,必須轉為utf-8 才可以,然後,如果字串中有空格的就轉為號了
<html> <script> var ds = '<?php echo $str;?>'; var dddd= decodeURIComponent (ds); alert(dddd); </script> </html>
以上是七道PHP經典面試題(附答案)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

PHP仍然流行的原因是其易用性、靈活性和強大的生態系統。 1)易用性和簡單語法使其成為初學者的首選。 2)與web開發緊密結合,處理HTTP請求和數據庫交互出色。 3)龐大的生態系統提供了豐富的工具和庫。 4)活躍的社區和開源性質使其適應新需求和技術趨勢。

PHP和Python都是高層次的編程語言,廣泛應用於Web開發、數據處理和自動化任務。 1.PHP常用於構建動態網站和內容管理系統,而Python常用於構建Web框架和數據科學。 2.PHP使用echo輸出內容,Python使用print。 3.兩者都支持面向對象編程,但語法和關鍵字不同。 4.PHP支持弱類型轉換,Python則更嚴格。 5.PHP性能優化包括使用OPcache和異步編程,Python則使用cProfile和異步編程。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP在現代化進程中仍然重要,因為它支持大量網站和應用,並通過框架適應開發需求。 1.PHP7提升了性能並引入了新功能。 2.現代框架如Laravel、Symfony和CodeIgniter簡化開發,提高代碼質量。 3.性能優化和最佳實踐進一步提升應用效率。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版
中文版,非常好用