100 个最热门 PHP 面试问题及答案 (PDF)

以下是 PHP 面试问题和答案,可帮助新手和有经验的应聘者获得理想的工作。

 

面向应届毕业生的 PHP 面试问题


1)什么是 PHP?

PHP 是一种基于脚本的网络语言,允许开发人员动态创建生成的网页。


2)PHP 的首字母缩写代表什么?

PHP 代表超文本预处理器。

👉 免费 PDF 下载:PHP 面试问题与答案


3)PHP 类似于哪种编程语言?

PHP 语法类似于 Perl,并且 C


4)PEAR 代表什么?

PEAR 是“PHP 扩展和应用程序存储库”的缩写。它扩展了 PHP,并为 Web 开发人员提供了更高级别的编程能力。


5)实际使用的PHP版本是什么?

推荐使用 PHP 7.1 或 7.2 版本。


6) 如何从命令行执行 PHP 脚本?

只需使用 PHP 命令行界面 (CLI) 并指定要执行的脚本的文件名,如下所示:
php script.php


7) 如何从命令行界面运行交互式 PHP shell?

只需使用带有选项 -a 的 PHP CLI 程序即可,如下所示:
php -a


8) 开始和结束 PHP 代码块的正确和最常见的两种方式是什么?

开始和结束 PHP 脚本的两种最常见方式是:

 <?php [   ---  PHP code---- ] ?> and <? [---  PHP code  ---] ?>

9)我们如何将输出直接显示到浏览器?

为了能够将输出直接显示到浏览器,我们必须使用特殊标签。


10) PHP 4 和 PHP 5 之间的主要区别是什么?

PHP 5 提供了许多额外的 OOP(面向对象编程) 特征。


11) PHP 是否支持多重继承?

PHP 仅支持单一继承;这意味着只能使用关键字“extended”从一个类扩展一个类。


12)final 类和 final 方法的含义是什么?

PHP5 中引入了 'final'。Final 类意味着该类不能被扩展,并且 final 方法不能被覆盖。


13) 在 PHP 中如何进行对象比较?

我们使用运算符“==”来测试两个对象是否来自同一个类,并且具有相同的属性和相等的值。我们可以通过使用身份运算符“===”来测试两个对象是否引用同一个类的同一个实例。


14) PHP 和 HTML 如何交互?

可以通过 PHP 脚本生成 HTML,也可以将信息从 HTML 传递到 PHP。


15) 通过表单或 URL 传递值时需要什么类型的操作?

如果我们想通过表单或 URL 传递值,那么我们需要使用 htmlspecialchars() 和 urlencode() 对其进行编码和解码。


16)PHP 和 Javascript 相互影响?

PHP 和 Javascript 由于 PHP 是服务器端语言,因此无法直接交互, Javascript 是一种客户端语言。但是,我们可以交换变量,因为 PHP 可以生成 Javascript 代码将由浏览器执行,并且可以通过 URL 将特定变量传回 PHP。


17) 使用图像功能需要什么?

执行图像功能需要 GD 库。


18) 函数“imagetypes()”有什么用途?

imagetypes() 给出当前版本 GD-PHP 支持的图像格式和类型。


19)使用哪些函数可以获取图像的属性(大小、宽度和高度)?

- 功能是 getimagesize() 对于尺寸, imagesx() 宽度和 imagesy() 为高度。


20) 如何使用 include() 和 require() 函数处理执行失败?

如果函数 require() 无法访问该文件,则以致命错误结束。但是, include() 函数给出警告,但 PHP 脚本继续执行。


21) require() 和 require_once() 之间的主要区别是什么?

require()require_once() 执行相同的任务,只是第二个函数在执行之前会检查 PHP 脚本是否已包含。

(include_once() 和 include() 也一样)


22) 如何使用 PHP 脚本显示文本?

有两种方法可用:

<!--?php echo "Method 1"; print "Method 2"; ?-->

23) 如何使用 PHP 显示变量的信息并让人类可读?

为了能够显示人类可读的结果,我们使用 print_r().


24) 如何为 PHP 脚本设置无限执行时间?

在脚本开头添加 set_time_limit(0) 可将执行时间设置为无限,以避免出现 PHP 错误“超出最大执行时间”。也可以在 php.ini 文件中指定此项。


针对经验丰富的 PHP 面试问题和答案

25) PHP 错误‘PHP 解析错误 – 第 x 行出现意外的 T_variable’是什么意思?

这是一个 PHP 语法错误,表示第 x 行的错误导致程序停止解析和执行。


26)我们应该怎么做才能将数据导出到 Excel 文件?

最常见和最常用的方法是将数据转换为 Excel 支持的格式。例如,可以写入 .csv 文件,选择逗号作为字段之间的分隔符,然后使用 Excel 打开该文件。


27) file_get_contents() 函数有什么用处?

file_get_contents() 让读取文件并将其存储在字符串变量中。


28)我们如何连接到 MySQL 来自 PHP 脚本的数据库?

为了能够连接到 MySQL 数据库,我们必须使用 mysqli_connect() 函数,如下所示:

<!--?php $database = mysqli_connect("HOST", "USER_NAME", "PASSWORD"); mysqli_select_db($database,"DATABASE_NAME"); ?-->

29) mysql_pconnect() 函数有什么用处?

mysql_pconnect() 确保与数据库的持久连接,这意味着当 PHP 脚本结束时连接不会关闭。

PHP 7.0 及以上版本不支持该函数


30) 如何在 PHP 中处理 Mysql 的结果集?

可以使用 mysqli_fetch_array、mysqli_fetch_assoc、mysqli_fetch_object 或 mysqli_fetch_row 处理结果集。


31) 如何知道结果集中返回的行数?

该功能 mysqli_num_rows() 返回结果集中的行数。


32)哪个函数返回查询所影响的条目数?

mysqli_affected_rows() 返回受 SQL 查询影响的条目数。


33) mysqli_fetch_object() 和 mysqli_fetch_array() 有什么区别?

- mysqli_fetch_object() 函数收集第一个匹配的记录,其中 mysqli_fetch_array() 从表中收集所有匹配的记录到一个数组中。


34)如何使用 GET 方法访问通过 URL 发送的数据?

要访问通过 GET 方法发送的数据,我们使用 $_GET 数组,如下所示:

www.url.com?var=value
$variable = $_GET["var"]; this will now contain 'value'

35) 如何使用 POST 方法访问通过 URL 发送的数据?

要访问以这种方式发送的数据,您可以使用 $_POST 数组。

想象一下,当用户单击提交到帖子表单时,表单上有一个名为“var”的表单字段,您可以像这样访问该值:

$_POST["var"];

36)如何检查给定变量的值是否为数字?

可以使用专用函数 is_numeric() 来检查它是否是一个数字。


37) 如何检查给定变量的值是否是字母数字?

可以使用专用函数 ctype_alnum 来检查它是否是字母数字值。


38) 如何检查给定变量是否为空?

如果我们想检查一个变量是否有值,可以使用empty()函数。


39)unlink() 函数含义是什么?

unlink() 函数专用于文件系统处理。它只是删除作为条目给出的文件。


40)unset() 函数含义是什么?

unset() 函数专用于变量管理。它将使变量变为未定义。


41) 如何在将数据存储到数据库之前对其进行转义?

addslashes 函数使我们能够在将数据存储到数据库之前对其进行转义。


42) 如何从字符串中删除转义字符?

stripslashes 函数使我们能够删除 绳子.


43)我们如何自动转义传入的数据?

我们必须在 PHP 的配置文件中启用魔术引号条目。


44) 函数 get_magic_quotes_gpc() 含义是什么?

函数 get_magic_quotes_gpc() 告诉我们魔术引号是否已打开。


45) 是否可以从数据中删除 HTML 标签?

strip_tags() 函数使我们能够清除 HTML 标签中的字符串。


46)函数中的静态变量有什么用处?

静态变量仅在函数内第一次定义,其值可以在函数调用期间修改,如下所示:

<!--?php function testFunction() { static $testVariable = 1; echo $testVariable; $testVariable++; } testFunction();        //1 testFunction();        //2 testFunction();        //3 ?-->

47) 如何定义可在 PHP 脚本函数中访问的变量?

此功能可使用全局关键字来实现。


48) 如何从函数返回值?

函数使用指令“return $value;”返回一个值。


49)用于散列密码最方便的散列方法是什么?

最好使用 crypt()(它本身支持多种哈希算法)或 hash() 函数(它支持比 crypt() 更多的变体),而不是使用 md5、sha1 或 sha256 等常见哈希算法(因为它们被认为速度很快)。因此,使用这些算法对密码进行哈希处理可能会造成漏洞。


50)哪种加密扩展提供数字签名的生成和验证?

PHP-OpenSSL 扩展提供了几种加密操作,包括数字签名的生成和验证。


针对 5 年经验的 PHP 面试问题

51) 如何在 PHP 脚本中定义常量?

define() 指令让我们定义一个常量,如下所示:

define ("ACONSTANT", 123);

52) 如何通过引用传递变量?

为了能够通过引用传递变量,我们在其前面使用与符号,如下所示 $var1 = &$var2


53) 在 PHP 中,整数 12 和字符串“13”的比较可以成功吗?

在 PHP 中可以比较“13”和 12,因为它将所有内容转换为整数类型。


54) 如何在 PHP 中转换类型?

必须在要转换的变量前的括号中指定输出类型的名称,如下所示:

* (int), (integer) – 转换为整数

* (bool), (boolean) – 转换为布尔值

* (float), (double), (real) – 转换为浮点型

* (字符串) – 转换为字符串

* (数组) – 转换为数组

* (对象) – 转换为对象


55)什么时候条件语句以 endif 结束?

当原来的 if 后面跟着:然后是没有括号的代码块。


56) 三元条件运算符在 PHP 中如何使用?

它由三个表达式组成:一个条件和两个操作数,描述当指定条件为真或假时应执行什么指令,如下所示:

Expression_1?Expression_2 : Expression_3;

57) 函数 func_num_args() 用于什么?

函数 func_num_args() 用于给出传递给函数的参数的数量。


58) 如果变量 $var1 设置为 10,$var2 设置为字符 var1,那么 $$var2 的值是多少?

$$var2 包含值 10。


59) 通过 :: 访问一个类意味着什么?

:: 用于访问不需要对象初始化的静态方法。


60) 在 PHP 中,对象是通过值传递还是通过引用传递?

在 PHP 中,对象是通过引用传递的。


61) 父构造函数是否在类构造函数中隐式调用?

不,必须按如下方式明确调用父构造函数:

parent::constructor($value)

62)__sleep 和 __wakeup 有什么区别?

__sleep 返回所有需要保存的变量的数组,而 __wakeup 则检索它们。


63)什么更快?

1- 组合两个变量如下:

$variable1 = 'Hello ';

$variable2 = 'World';

$variable3 = $variable1.$variable2;

Or

2- $variable3 = "$variable1$variable2";

$variable3 将包含“Hello World”。第一个代码比第二个代码更快,特别是对于大量数据而言。


64)会话的定义是什么?

会话是一个逻辑对象,使我们能够跨多个 PHP 页面保存临时数据。


65) 如何在 PHP 中发起会话?

使用函数 session_start() 让我们激活一个会话。


66) 如何传播会话 ID?

您可以通过 cookies 或 URL 参数传播会话 ID。


67)持久性 Cookie 的含义是什么?

持久性 Cookie 永久存储在浏览器计算机上的 Cookie 文件中。默认情况下,Cookie 是临时的,如果我们关闭浏览器,Cookie 就会被删除。


68) 会议什么时候结束?

当 PHP 脚本执行完毕后会话会自动结束,但可以使用 session_write_close() 手动结束。


69) session_unregister() 和 session_unset() 有什么区别?

session_unregister() 函数从当前会话中取消注册全局变量,而 session_unset() 函数释放所有会话变量。


70)$GLOBALS 是什么意思?

$GLOBALS 是关联数组,包括对当前在脚本的全局范围内定义的所有变量的引用。


针对 10 年经验的 PHP 面试问题

71) $_SERVER 是什么意思?

$_SERVER 是一个数组,包含由 Web 服务器创建的信息,例如路径、标头和脚本位置。


72)$_FILES 是什么意思?

$_FILES 是一个关联数组,由通过 HTTP POST 方法发送到当前脚本的项目组成。


73) $_FILES['userfile']['name'] 和 $_FILES['userfile']['tmp_name'] 有什么区别?

$_FILES['userfile']['name'] 表示客户端计算机上文件的原始名称,

$_FILES['userfile']['tmp_name'] 表示存储在服务器上的文件的临时文件名。


74) 上传文件时出现问题时如何获取错误信息?

$_FILES['userfile']['error'] 包含与上传文件相关的错误代码。


75) 如何更改要上传的文件的最大大小?

我们可以通过改变php.ini中的upload_max_filesize来改变要上传的文件的最大大小。


76)$_ENV 是什么意思?

$_ENV 是通过环境方法发送到当前 PHP 脚本的变量关联数组。


77)$_COOKIE 是什么意思?

$_COOKIE 是使用 HTTP Cookies 发送到当前 PHP 脚本的变量关联数组。


78)变量的范围是什么意思?

变量的作用域是定义该变量的上下文。大多数情况下,所有 PHP 变量都只有一个作用域。这个作用域还涵盖了包含文件和必需文件。


79)‘BITWISE AND’运算符和‘LOGICAL AND’运算符有什么区别?

$a 和 $b:如果 $a 和 $b 都为 TRUE,则为 TRUE。

$a & $b:设置 $a 和 $b 中均设置的位。


80)两个主要的字符串运算符是什么?

第一个是连接运算符 ('.'),它返回其右侧和左侧参数的连接结果。第二个是 ('.='),它将右侧的参数附加到左侧的参数。


81) 数组运算符 ‘===’ 是什么意思?

如果 $a 和 $b 具有相同的键/值对、相同的顺序和相同的类型,则 $a === $b TRUE。


82) $a != $b 和 $a !== $b 有什么区别?

!= 表示不等式(如果 $a 不等于 $b 则为 TRUE),而 !== 表示非同一式(如果 $a 不等于 $b 则为 TRUE)。


83) 如何判断 PHP 变量是否是某个类的实例化对象?

为了能够验证 PHP 变量是否是某个类的实例化对象,我们使用 instanceof。


84)goto 语句有什么用处?

可以放置 goto 语句以在 PHP 程序内部进行跳转。目标由标签后跟冒号指向,指令指定为 goto 语句后跟所需目标标签。


85)Exception::getMessage 和 Exception::getLine 有什么区别?

Exception::getMessage 让我们获取异常消息,Exception::getLine 让我们获取发生异常的行。


86) 表达式 Exception::__toString 是什么意思?

Exception::__toString 给出异常的字符串表示形式。


87) 如何解析配置文件?

函数 parse_ini_file() 使我们能够加载 filename 中指定的 ini 文件并以关联数组的形式返回其中的设置。


88)如何判断一个变量是否已设置?

布尔函数 isset 确定变量是否设置且不为 NULL。


89) 函数 strstr() 和 stristr() 有什么区别?

字符串函数 strstr(string allString, string occ) 返回 allString 中从第一次出现 occ 到 allString 末尾的部分。此函数区分大小写。stristr() 与 strstr() 相同,只是不区分大小写。


90)for 和 foreach 有什么区别?

表达式如下:

对于(表达式1;表达式2;表达式3)

声明

第一个表达式在开始时执行一次。在每次迭代中,都会评估 expr2。如果它为 TRUE,则循环继续,并执行 for 中的语句。如果它的值为 FALSE,则循环执行结束。在每次迭代结束时测试 expr3。

但是,foreach 提供了一种迭代数组的简单方法,并且它只适用于数组和对象。


91) 是否可以使用专用按钮提交表单?

可以使用 document.form.submit() 函数来提交表单。例如: <input type=button value="SUBMIT" onClick="document.form.submit()">


92) ereg_replace() 和 eregi_replace() 有什么区别?

函数 eregi_replace() 与函数 ereg_replace() 相同,只是它在匹配字母字符时忽略大小写区别。


93) 是否可以保护查询字符串中的特殊字符?

是的,我们使用 urlencode() 函数来保护特殊字符。


94) PHP 中可能出现哪三类错误?

错误的三个基本类别是通知(非严重错误)、警告(严重错误)和致命错误(严重错误)。


95) 字符 \034 和 \x34 有什么区别?

\034 是八进制 34,而 \x34 是十六进制 34。


96) 如何在页面之间导航传递变量?

可以使用会话、cookie 或隐藏表单字段在 PHP 页面之间传递变量。


97) 是否可以延长 PHP 脚本的执行时间?

使用 set_time_limit(int seconds) 可以延长 PHP 脚本的执行时间。默认限制为 30 秒。


98) 是否有可能销毁 cookie?

是的,可以通过设置过去的过期时间来实现。


99) PHP 中的默认会话时间是多少?

php 中默认的 session 时间是直到浏览器关闭


100) 可以在 PHP 中使用 COM 组件吗?

是的,可以将 (分布式) 组件对象模型组件 ((D)COM) 集成到作为框架提供的 PHP 脚本中。


101) 解释是否可以在多个 PHP 项目之间共享一个 Memcache 实例?

是的,可以在多个项目之间共享一个 Memcache 实例。Memcache 是一个内存存储空间,您可以在一台或多台服务器上运行 Memcache。您还可以配置客户端以与一组特定的实例通信。因此,您可以在同一台主机上运行两个不同的 Memcache 进程,但它们是完全独立的。除非您已对数据进行分区,否则就需要知道从哪个实例获取数据或将数据放入哪个实例中。


102) 解释一下当您对 PHP 进行更改时如何更新 Memcached?

当 PHP 发生更改时,您可以通过以下方式更新 Memcached

  • 主动清除缓存: 插入或更新时清除缓存
  • 重置缓存: 它与第一种方法类似,但不是仅仅删除键并等待下一次数据请求来刷新缓存,而是在插入或更新后重置值。

这些面试问题也会对你的口试有帮助