排名前 100 的 PHP 面试问题及答案 (PDF)
PHP 初学者面试题
1)什么是 PHP?
PHP 是一种基于脚本的 Web 语言,允许开发人员动态创建生成的网页。
2)PHP 的首字母缩写是什么意思?
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 只支持单一继承;这意味着一个类只能使用“extends”关键字扩展自一个类。
12)final class 和 final method 的意思是什么?
“final”在 PHP5 中引入。Final class 意味着该类不能被扩展,而 final method 不能被重写。
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 中的错误“Parse error – unexpected T_variable at line x”是什么意思?
这是一个 PHP 语法错误,表示第 x 行的错误会阻止程序解析和执行。
26)要将数据导出到 Excel 文件,我们应该怎么做?
最常见和常用的方法是将数据放入 Excel 支持的格式。例如,您可以写入 .csv 文件,选择逗号作为字段分隔符,然后用 Excel 打开该文件。
27)`file_get_contents()` 函数有什么用?
file_get_contents()
允许读取文件并将其存储在字符串变量中。
28)如何从 PHP 脚本连接到 MySQL 数据库?
要连接到 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)如何访问通过 URL 使用 GET 方法发送的数据?
要访问通过 GET 方法发送的数据,我们使用 $_GET 数组,如下所示:
www.url.com?var=value $variable = $_GET["var"]; this will now contain 'value'
35)如何访问通过 URL 使用 POST 方法发送的数据?
要以这种方式访问发送的数据,您可以使用 $_POST 数组。
假设您的表单中有一个名为“var”的表单字段,当用户单击提交以提交表单时,您可以通过以下方式访问该值:
$_POST["var"];
36)如何检查给定变量的值是否为数字?
可以使用专用函数 `is_numeric()` 来检查它是否为数字。
37)如何检查给定变量的值是否为字母数字?
可以使用专用函数 `ctype_alnum()` 来检查它是否为字母数字值。
38)如何检查给定变量是否为空?
如果我们想检查一个变量是否有值,可以使用 `empty()` 函数。
39)`unlink()` 函数是什么意思?
unlink() 函数专门用于文件系统处理。它会删除作为条目给出的文件。
40)`unset()` 函数是什么意思?
unset() 函数专门用于变量管理。它将使变量未定义。
41)在将数据存储到数据库之前如何转义数据?
addslashes 函数使我们能够将数据转义后再存储到数据库。
42)如何从字符串中删除转义字符?
stripslashes 函数使我们能够从字符串中删除撇号之前的转义字符。字符串。
43)如何自动转义传入的数据?
我们必须在 PHP 的配置文件中启用 Magic quotes 条目。
44)`get_magic_quotes_gpc()` 函数是什么意思?
get_magic_quotes_gpc() 函数告诉我们 magic quotes 是否已打开。
45)可以删除数据中的 HTML 标签吗?
strip_tags() 函数使我们能够清理字符串中的 HTML 标签。
46)函数中的静态变量有什么用?
静态变量仅在第一次定义时在函数内定义,并且可以在函数调用期间修改其值,如下所示:
<!--?php function testFunction() { static $testVariable = 1; echo $testVariable; $testVariable++; } testFunction(); //1 testFunction(); //2 testFunction(); //3 ?-->
47)如何在 PHP 脚本的函数中定义一个可访问的变量?
这可以通过使用 `global` 关键字来实现。
48)如何从函数返回值?
函数使用指令“return $value;”返回值。
49)哈希密码最方便的哈希方法是什么?
优选使用 crypt()(它本机支持多种哈希算法)或 hash() 函数(它支持比 crypt() 更多的变体),而不是使用 md5、sha1 或 sha256 等常用哈希算法,因为它们旨在快速运行。因此,使用这些算法哈希密码可能会带来安全漏洞。
50)哪个加密扩展提供数字签名的生成和验证?
PHP-OpenSSL 扩展提供了多种加密操作,包括数字签名的生成和验证。
PHP 五年工作经验面试题
51)如何在 PHP 脚本中定义常量?
define() 指令允许我们如下定义常量:
define ("ACONSTANT", 123);
52)如何按引用传递变量?
要按引用传递变量,我们在其前面加上一个 ampersand,如下所示:$var1 = &$var2
53)整数 12 和字符串“13”的比较在 PHP 中有效吗?
PHP 中可以比较“13”和 12,因为它会将所有内容转换为整数类型。
54)如何在 PHP 中进行类型转换?
输出类型的名称必须写在要转换为的变量前面,用括号括起来,如下所示:
* (int), (integer) – 转换为整数
* (bool), (boolean) – 转换为布尔值
* (float), (double), (real) – 转换为浮点数
* (string) – 转换为字符串
* (array) – 转换为数组
* (object) – 转换为对象
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;
或者
2- $variable3 = "$variable1$variable2";
$variable3 将包含“Hello World”。第一段代码比第二段代码更快,尤其是在处理大量数据时。
64)什么是 session 的定义?
Session 是一个逻辑对象,使我们能够在多个 PHP 页面之间保留临时数据。
65)如何在 PHP 中启动 session?
使用 `session_start()` 函数可以激活 session。
66)如何传播 session id?
您可以通过 cookie 或 URL 参数传播 session id。
67)什么是持久 Cookie?
持久 Cookie 永久存储在浏览器计算机的 cookie 文件中。默认情况下,Cookie 是临时的,关闭浏览器时会被删除。
68)Session 何时结束?
Session 在 PHP 脚本执行完毕时自动结束,但可以使用 session_write_close() 手动结束。
69)`session_unregister()` 和 `session_unset()` 有什么区别?
`session_unregister()` 函数从当前 session 中注销一个全局变量,而 `session_unset()` 函数释放所有 session 变量。
70)`$GLOBALS` 是什么意思?
$GLOBALS 是一个关联数组,其中包含对脚本全局作用域中当前定义的所有变量的引用。
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 Cookie 发送到当前 PHP 脚本的变量的关联数组。
78)变量的作用域是什么意思?
变量的作用域是定义它的上下文。在大多数情况下,所有 PHP 变量只有一个作用域。此单一作用域也跨越包含和必需的文件。
79)“按位与”运算符和“逻辑与”运算符的区别是什么?
$a and $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()` 函数允许我们加载指定的 ini 文件,并以关联数组的形式返回其中的设置。
88)如何确定一个变量是否已被设置?
布尔函数 `isset` 确定一个变量是否已设置且不为 NULL。
89)`strstr()` 和 `stristr()` 函数有什么区别?
字符串函数 `strstr(string allString, string occ)` 返回 `allString` 中从 `occ` 的第一个出现到 `allString` 末尾的部分。此函数区分大小写。`stristr()` 与 `strstr()` 相同,只是它不区分大小写。
90)`for` 和 `foreach` 有什么区别?
`for` 的写法如下:
for (expr1; expr2; expr3)
statement
第一个表达式只执行一次。在每次迭代中,都会评估 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 中可能发生的三种错误类别是什么?
三种基本错误类别是:Notice(非关键)、Warning(严重错误)和 Fatal Error(关键错误)。
95)字符 `\034` 和 `\x34` 有什么区别?
\034 是八进制的 34,而 \x34 是十六进制的 34。
96)如何在页面导航之间传递变量?
可以使用 session、cookie 或隐藏表单字段在 PHP 页面之间传递变量。
97)是否可以延长 PHP 脚本的执行时间?
使用 `set_time_limit(int seconds)` 可以延长 PHP 脚本的执行时间。默认限制为 30 秒。
98)可以删除 Cookie 吗?
是的,可以通过设置带有过去到期时间的 Cookie 来删除 Cookie。
99)PHP 中的默认 session 时间是多少?
PHP 中的默认 session 时间是直到浏览器关闭。
100)可以使用 COM 组件吗?
是的,可以将(分布式)组件对象模型组件((D)COM)集成到 PHP 脚本中,这提供了作为框架。
101)请解释一下是否可以在多个 PHP 项目之间共享单个 Memcache 实例?
是的,可以在多个项目之间共享单个 Memcache 实例。Memcache 是一个内存存储空间,您可以在一个或多个服务器上运行 Memcache。您还可以配置客户端与特定的实例集通信。因此,您可以在同一主机上运行两个不同的 Memcache 进程,但它们是完全独立的。除非您已分区数据,否则需要知道从哪个实例获取或放入数据。
102)请解释在更改 PHP 时如何更新 Memcached?
在更改 PHP 时,可以通过以下方式更新 Memcached:
- 主动清除缓存:在插入或更新数据时清除缓存。
- 重置缓存:这与第一种方法类似,但不是仅删除键并等待下一个请求刷新缓存,而是会在插入或更新后重置值。
这些面试问题也将有助于您的口试