20+值得了解的PHP面試題(附答案分析)
這篇文章跟大家分享20多個PHP面試題,查漏補缺,帶你鞏固一波地基,看看你能答對幾個?希望對大家有幫助。
Q1: == 和 === 有什麼差別?
主題: PHP
困難: ⭐
- 如果是兩個不同的型別,運算子
==
則在兩個不同的型別之間進行強制轉換 -
===
運算子執行'型別安全比較'
這表示只有當兩個運算元具有相同的型別和相同的值時,它才會傳回TRUE。
1 === 1: true 1 == 1: true 1 === "1": false // 1 是一个整数, "1" 是一个字符串 1 == "1": true // "1" 强制转换为整数,即1 "foo" === "foo": true // 这两个操作数都是字符串,并且具有相同的值
? 源自: https://stackoverflow.com/questions/80646/how-do-the-php-equality-double-equals-and-identity-triple-equals -comp
Q2: 如何透過引用傳遞變數?
主題: PHP
困難: ⭐
為了能夠透過引用傳遞變量,我們在其前面使用&,如下:
$var1 = &$var2
? 源自: https://www.guru99.com/php-interview-questions-answers .html
Q3: $GLOBAL 是什麼意思?
主題: PHP
難: ⭐
$GLOBALS
是關聯數組,包含對腳本全域範圍內目前定義的所有變數的引用。
? 源自: https://www.guru99.com/php-interview-questions-answers.html
## Q4: ini_set() 有什麼用?
主題:PHP允許使用者使用ini_set() 修改php.ini 中提到的一些設定。此函數需要兩個字串參數。第一個是要修改的設定的名稱,第二個是要指派給它的新值。 給定的程式碼行將啟用腳本的 display_error 設定(如果它被停用)。PHP難: ⭐
ini_set('display_errors', '1');
源自: https://github.com/Bootsity/cracking-php-interviews-book
Q5:我應該在什麼時候使用require 和include 呢?
主題:PHP困難: ⭐⭐
require()函數與
include()函數相同,只是它處理錯誤的方式不同。如果發生錯誤,
include()函數會產生警告,但腳本會繼續執行。
require()函數會產生致命錯誤,腳本就會停止。
require_once。
require或
include代替意味著您的程式碼在其他地方不可重複使用,即您引入的腳本實際上是在執行程式碼,而不是提供類或某些類別功能庫。
Source: https://stackoverflow.com/questions/2418473/difference-between-require-include-require-once-and-include-once
Q6: PHP中的stdClass是什麼?
主題:PHP 難度: ⭐⭐
stdClass只是將其他類型強制轉換為對象時使用的通用”空''類。
stdClass不是PHP中對象的基類。這可以很容易地證明:
class Foo{} $foo = new Foo(); echo ($foo instanceof stdClass)?'Y':'N'; // 输出'N'
StdClass的一種簡單使用情境是替代關聯數組。請參見下面的範例,該範例顯示
json_decode()如何允許取得StdClass實例或關聯數組。
相同但未在本範例中顯示的
SoapClient::__soapCall傳回一個
StdClass實例。
//带有StdClass的示例 $json = '{ "foo": "bar", "number": 42 }'; $stdInstance = json_decode($json); echo $stdInstance - > foo.PHP_EOL; //"bar" echo $stdInstance - > number.PHP_EOL; //42 //Example with associative array $array = json_decode($json, true); echo $array['foo'].PHP_EOL; //"bar" echo $array['number'].PHP_EOL; //42
源自: https://stackoverflow.com/questions/931407/what-is-stdclass-in-php
Q7: PHP中的die() 和exit( ) 函數有什麼不同?
主題:沒有差別,它們是一樣的。選擇PHP#困難: ⭐⭐
die()而不是
exit()的唯一好處可能是你節省了額外鍵入一個字母的時間.
源自: https://stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php
Q8:它们之间的主要区别是什么
话题: PHP
困难: ⭐⭐
const
和define
的根本区别在于,const
在编译时定义常量,而define
在运行时定义常量。
const FOO = 'BAR'; define('FOO', 'BAR'); // but if (...) { const FOO = 'BAR'; // 无效 } if (...) { define('FOO', 'BAR'); // 有效 }
同样在PHP 5.3之前,const
命令不能在全局范围内使用。你只能在类中使用它。当你想要设置与该类相关的某种常量选项或设置时,应使用此选项。或者你可能想要创建某种枚举。一个好的const
用法的例子是摆脱了魔术数字。
Define
可以用于相同的目的,但只能在全局范围内使用。它应该仅用于影响整个应用程序的全局设置。
除非你需要任何类型的条件或表达式定义,否则请使用consts
而不是define()
——这仅仅是为了可读性!
? 源自: https://stackoverflow.com/questions/2447791/define-vs-const
Q9: isset() 和 array_key_exists()之间有什么区别?
话题: PHP
困难: ⭐⭐
array_key_exists
它会告诉你数组中是否存在键,并在$a
不存在时报错。- 如果 key或变量存在且不是
null
,isset
才会返回true
。当$a
不存在时,isset
不会报错。
考虑:
$a = array('key1' => 'Foo Bar', 'key2' => null); isset($a['key1']); // true array_key_exists('key1', $a); // true isset($a['key2']); // false array_key_exists('key2', $a); // true
? 源自: https://stackoverflow.com/questions/3210935/whats-the-difference-between-isset-and-array-key-exists
Q10: var_dump() 和 print_r() 有什么不同?
话题: PHP
困难: ⭐⭐
var_dump
函数用于显示变量/表达式的结构化信息,包括变量类型和变量值。数组递归浏览,缩进值以显示结构。它还显示哪些数组值和对象属性是引用。print_r()
函数以我们可读的方式显示有关变量的信息。数组值将以键和元素的格式显示。类似的符号用于对象。
考虑:
$obj = (object) array('qualitypoint', 'technologies', 'India');
var_dump($obj)
将在屏幕的输出下方显示:
object(stdClass)#1 (3) { [0]=> string(12) "qualitypoint" [1]=> string(12) "technologies" [2]=> string(5) "India" }
print_r($obj)
将在屏幕的输出下方显示。
stdClass Object ( [0] => qualitypoint [1] => technologies [2] => India )
? 源自: https://stackoverflow.com/questions/3406171/php-var-dump-vs-print-r
Q11: 解释不同的 PHP 错误是什么
话题: PHP
困难: ⭐⭐
notice
不是一个严重的错误,它说明执行过程中出现了一些错误,一些次要的错误,比如一个未定义的变量。- 当出现更严重的错误,如include()命令引入不存在的文件时,会给出警告
warning
。 这个错误和上面的错误发生,脚本都将继续。 fatal error
致命错误将终止代码。未能满足require()将生成这种类型的错误。
? 源自: https://pangara.com/blog/php-interview-questions
Q12: 如何在 PHP 中启用错误报告?
话题: PHP
困难: ⭐⭐
检查 php.ini 中的“display_errors
”是否等于“on”,或者在脚本中声明“ini_set('display_error',1)
”。
然后,在你的代码中包含“ERROR_REPORTING(E_ALL)
”,以便在脚本执行期间显示所有类型的错误消息。
? 源自: https://www.codementor.io/blog/php-interview-questions-sample-answers-du1080ext
Q13: 使用默认参数声明某些函数
话题: PHP
困难: ⭐⭐
思考:
function showMessage($hello = false){ echo ($hello) ? 'hello' : 'bye'; }
? 源自: https://www.codementor.io/blog/php-interview-questions-sample-answers-du1080ext
Q14: PHP 是否支持多重继承?
话题: PHP
困难: ⭐⭐
PHP 只支持单一继承;这意味着使用关键字’extended’只能从一个类扩展一个类。
? 源自: https://www.guru99.com/php-interview-questions-answers.html
Q15: 在 PHP 中,对象是按值传递还是按引用传递?
话题: PHP
困难: ⭐⭐
在 PHP 中,通过值传递的对象。
? 源自: https://www.guru99.com/php-interview-questions-answers.html
Q16:$a != $b 和 $a !== $b ,之间有什么区别?
话题: PHP
困难: ⭐⭐
!=
表示 不等于 (如果$a不等于$b,则为 True), !==
表示 不全等 (如果$a与$b不相同,则为 True).
? 源自: https://www.guru99.com/php-interview-questions-answers.html
Q17: 在 PHP 中,什么是 PDO?
话题: PHP
困难: ⭐⭐
PDO 代表 PHP 数据对象。
它是一组 PHP 扩展,提供核心 PDO 类和数据库、特定驱动程序。它提供了供应商中立、轻量级的数据访问抽象层。因此,无论我们使用哪种数据库,发出查询和获取数据的功能都是相同的。它侧重于数据访问抽象,而不是数据库抽象。
? 源自: https://github.com/Bootsity/cracking-php-interviews-book
Q18: 说明我们如何在PHP中处理异常?
Topic: PHP
Difficulty: ⭐⭐
当程序执行出现异常报错时,后面的代码将不会再执行,这时PHP将会尝试匹配第一个catch块进行异常的处理,如果没有捕捉到异常程序将会报致命错误并显示”Uncaught Exception”。
可以在PHP中抛出和捕获异常。
为了处理异常,代码可以被包围在”try”块中.
每个 try 必须至少有一个对应的 catch
块 。多个不同的catch块可用于捕获不同类的异常。
在catch块中也可以抛出异常(或重新抛出之前的异常)。
思考:
try { print "this is our try block n"; throw new Exception(); } catch (Exception $e) { print "something went wrong, caught yah! n"; } finally { print "this part is always executed n"; }
? Source: https://github.com/Bootsity/cracking-php-interviews-book
Q19: 区分echo和print()
Topic: PHP
Difficulty: ⭐⭐
echo
和 print
基本上是一样的. 他们都是用来打印输出数据的。
区别在于:
- echo没有返回值,而print的返回值为1,因此print可以在表达式中使用。
- echo可以接受多个参数一起输出(但是这种多个的输出方式很少见),而print一次只可以输出一个参数。
- echo 的输出比 print 效率要高一些 .
? Source: https://github.com/Bootsity/cracking-php-interviews-book
Q20: require_once 和 require 在什么场景下使用?
Topic: PHP
Difficulty: ⭐⭐⭐
require_once()
作用与 require()
的作用是一样的,都是引用或包含外部的一个php文件,require_once()
引入文件时会检查文件是否已包含,如果已包含,不再包含(require)它。
我建议在99.9%的时候要使用 require_once
使用require
或 include
意味着您的代码不可在其他地方重用,即您要拉入的脚本实际上是在执行代码,而不是提供类或某些函数库。
? Source: https://stackoverflow.com/questions/2418473/difference-between-require-include-require-once-and-include-once
Q21: 判断PHP数组是否是关联数组
Topic: PHP
Difficulty: ⭐⭐⭐
思考:
function has_string_keys(array $array) { return count(array_filter(array_keys($array), 'is_string')) > 0; }
如果$array
至少有一个字符串类型的 key ,它将被视为关联数组。
? Source: stackoverflow.com
Q22: 如何将变量和数据从PHP传至Javascript
Topic: PHP
Difficulty: ⭐⭐⭐
这里有几种实现方法:
- 使用 Ajax 从服务端获取你需要的数据。
思考 get-data.php:
echo json_encode(42);
思考 index.html:
<script> function reqListener () { console.log(this.responseText); } var oReq = new XMLHttpRequest(); // new 一个请求对象 oReq.onload = function() { // 在这里你可以操作响应数据 // 真实的数据来自 this.responseText alert(this.responseText); // 将提示: 42 }; oReq.open("get", "get-data.php", true); // ^ 不要阻塞的其余部分执行。 // 不要等到请求结束再继续。 oReq.send(); </script>
- 可以在网页任何地方输出数据, 然后使用 JavaScript 从 DOM 中获取信息.
<div id="dom-target" style="display: none;"> <?php $output = "42"; // 此外, 做一些操作,获得 output. echo htmlspecialchars($output); /* 你必须避免特殊字符,不然结果将是无效HTML。 */ ?> </div> <script> var div = document.getElementById("dom-target"); var myData = div.textContent; </script>
- 直接在 JavaScript 代码中 echo 数据。
<script> var data = <?php echo json_encode("42", JSON_HEX_TAG); ?>; // Don't forget the extra semicolon! </script>
? Source: https://stackoverflow.com/questions/23740548/how-do-i-pass-variables-and-data-from-php-to-javascript
Q23: 有一个方法可以复制一个 PHP 数组至另一个数组吗?
Topic: PHP
Difficulty: ⭐⭐⭐
PHP 数组通过复制进行赋值,而对象通过引用进行赋值。所有默认情况下,PHP 将复制这个数组。这里有一个 PHP 参考,一目了然:
$a = array(1,2); $b = $a; // $b 是一个不同的数组 $c = &$a; // $c 是 $a 的引用
? Source: https://stackoverflow.com/questions/1532618/is-there-a-function-to-make-a-copy-of-a-php-array-to-another
英文原文地址:https://dev.to/fullstackcafe/45-important-php-interview-questions-that-may-land-you-a-job-1794
推荐学习:《PHP视频教程》
以上是20+值得了解的PHP面試題(附答案分析)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。
