100 个常见的 PHP 面试题和答案分享
liuian 2024-12-12 13:29 38 浏览
1) PHP 是什么?
PHP 是一种基于脚本的 web 语言,开发者可以动态的创建网页。
2) PHP 的全称?
Hypertext Preprocessor(超文本预处理器)。
3) PHP 与哪些编程语言相似?
PHP 语法类似于 Perl 和 C。
150粉丝福利安排PHP进阶架构资料,每日只限前十名
5) 实际使用的 PHP 是哪个版本?
推荐使用版本 7。
6) 如何从命令行执行 PHP 脚本?
在命令行界面(CLI),指定要执行的脚本的文件名,如下所示:
php script.php
7) 如何从命令行界面运行交互式 PHP Shell?
将 PHP CLI 程序与 - a 选项一起使用,如下所示:
php -a
8) 正确开始和结束 PHP 代码块的最常见的两种方式是什么?
开始和结束 PHP 脚本的两种最常见的方式是:
<?php [ --- PHP code---- ] ?> and <? [--- PHP code ---] ?>
大厂必备面试题
面试10家公司,收获9个offer,2020年PHP 面试问题
2020最新大厂PHP面试题(附答案)
php面试题之PHP核心技术
9) 如何直接将输出显示给浏览器?
将输出直接显示给浏览器,我们必须使用特殊标记 <?=and?>。
11) PHP 是否支持多重继承?
PHP 只支持单继承。PHP 的类使用关键字 extends 继承另一个类
12) 使用 final 修饰的类和方法代表什么意思?
final 是在 PHP5 版本引入的,它修饰的类不允许被继承,它修饰的方法不允许被重写。
13) PHP 中如何比较两个对象?
在 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) PHP 处理图片需要添加什么扩展?
需要 GD 库来执行处理图片功能。
18) 函数 imagetypes() 的功能?
imagetypes() 给出当前版本的 GD-PHP 支持的图像格式和类型。
19) 获取图片属性(size, width, 和 height)的函数是什么?
获取图片大小 size:getimagesize ();获取图片宽度 width:imagesx ();获取图片高度 height:imagesy ()。
20) include() 和 require() 在执行失败的情况下有什么不同?
include() 将会产生一个警告,不影响后续程序的执行。require() 将会产生一个致命错误,后续程序停止执行。
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 文件中指定它。
25) PHP 错误 ‘Parse error in PHP - unexpected T_variable at line x’ 意思是?
这是一个 PHP 语法错误,表示 x 行的错误会停止解析和执行程序。
26) 如何将数据导出到 Excel 文件中?
最常见和常用的方法是将数据转换为 Excel 支持的格式。例如,可以编写 .csv 文件,例如选择逗号作为字段之间的分隔符,然后使用 Excel 打开文件。
27) file_get_contents () 函数的作用是?
file_get_contents () 可读取文件并将其存储到字符串变量中。
28) 如何使用 PHP 脚本 连接 MySQL 数据库?
为了连接到 MySQL 数据库,必须使用 mysql_connect () 函数:
<!--?php $database = mysqli_connect("HOST", "USER_NAME", "PASSWORD"); mysqli_select_db($database,"DATABASE_NAME"); ?-->
29) mysql_pconnect () 函数的用途为?
mysql_pconnect () 函数确保与数据库的持久连接,这意味着 PHP 脚本结束时连接不会关闭。
PHP7.0 及以上版本已不支持该函数。
30) 如何在 PHP 中处理 MySQL 的结果集?
可以使用 mysqli_fetch_array, mysqli_fetch_assoc, mysqli_fetch_object or 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"]; 现在将包含 '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) 如何从字符串中删除转义字符?
使用 stripslash 函数,我们可以删除字符串中的转义字符。
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 脚本函数中可访问的变量??
使用 global 关键字。
48) 如何从函数中返回值?
使用指令 ‘return $value;’ 。
49) 用于哈希密码最便捷的哈希方法是什么?
最好使用本身支持几种哈希算法的 crypt () 或支持比 crypt () 更多变体的函数 hash (),而不是使用常见的哈希算法,如 MD5、SHA1 或 sha256,因为它们被认为是存在安全问题的。因此,使用这些算法的哈希密码可能会产生漏洞。
50) 哪种加密扩展可以生成和验证数字签名?
PHP-OpenSSL 扩展提供了几种加密操作,包括数字签名的生成和验证。
51) 如何在 PHP 脚本中定义常量?
define () 指令允许我们按如下方式定义常量:
define ("ACONSTANT", 123);
52) 如何通过引用传递变量?
为了能够通过引用传递变量,我们在变量前面使用了 & 符号,如下所示 $var1=&$var2
53) 整数 12 和字符串 “13” 的比较在 PHP 中是否有效?
“13” 和 12 可以在 PHP 中进行比较,因为它将所有内容都强制转换为整数类型。
54) 如何在 PHP 中强制转换类型?
输出类型的名称必须在要强制转换的变量前的括号中指定,如下所示:
(int), (integer) - 强制转换为整型
(bool), (boolean) - 强制转换为布尔值
(float), (double), (real) - 强制转换为浮点型
(string) - 强制转换为字符串
(array) - 强制转换为数组
(object) - 强制转换为对象
55) 条件语句何时以 endif 结尾?
当最初的 if 后面跟着:然后是没有大括号的代码块时。
56) PHP 中如何使用三元条件运算符?
它由三个表达式组成:一个条件和两个操作数,它们描述在指定条件为 true 或 false 时应执行的指令,如下所示:
Expression_1?Expression_2 : Expression_3;
57) 函数 func_num_args () 的作用是什么?
函数 func_num_args () 用于提供传递给函数的参数数量
58) 如果变量 $ var1 设置为 10,而 $ var2 设置为字符 var1,那么 $ var2 的值是多少?
$var2 包含值 10。
59) 通过::访问类意味着什么?
:: 用于访问不需要对象初始化的静态方法。
60) 在 PHP 中,对象是按值传递还是按引用传递?
对象按值传递。
** 61)是否在类构造函数中隐式调用了 Parent 构造函数?**
不,必须显式调用父构造函数,如下所示:
parent::constructor($value)
** 62)__sleep 和__wakeup 有什么区别?**
__sleep 返回所有需要保存的变量的数组,而__wakeup 检索它们。
** 63)更快些吗?**
1 - 结合以下两个变量:
$ variable1 ='你好';
$ variable2 ='世界';
$ variable3 = $ variable1.$ variable2;
要么
2- $variable3 = "$variable1$variable2";
$variable3 将包含 “你好 世界”。第一个代码比第二个代码快,特别是对于大型数据集。
** 64)会话的定义是什么?**
会话是一个逻辑对象,使我们能够跨多个 PHP 页面保留临时数据。
** 65)如何在 PHP 中启动会话?**
使用 session_start() 函数可以激活会话。
** 66)如何传播会话 ID?**
您可以通过 Cookie 或 URL 参数传播会话 ID。
** 67)永久性 Cookie 的含义是什么?**
永久性 cookie 永久存储在浏览器计算机上的 cookie 文件中。默认情况下,cookies 是临时的,如果我们关闭浏览器,cookies 将被删除。
** 68)会议何时结束?**
会话在 PHP 脚本完成执行时自动结束,但可以使用 session_write_close() 手动结束。
** 69)session_unregister() 和 session_unset() 有什么区别?**
session_unregister() 函数从当前会话中注销全局变量,而 session_unset() 函数则释放所有会话变量。
** 70)$GLOBALS 是什么意思?**
$GLOBALS 是一个关联数组,包括对当前在脚本的全局范围内定义的所有变量的引用。
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 是什么意思?
通过环境方式传递给当前脚本的变量的数组。
77)$ _COOKIE 是什么意思?
通过 HTTP Cookies 方式传递给当前脚本的变量的数组。
78)变量的作用域是什么意思?
变量的作用域定义了变量的环境上下文。在大多数情况下,PHP 变量只有一个变量域。这一作用域也涵盖了 include 与 require 的文件。
79)’BITWISE AND’ 运算符和 ‘LOGICAL AND’ 运算符之间有什么区别?
$a and $b - 只有在 $a 和 $b 都为 true 的情况下才为 true
$a & $b - 把 $a 和 $b 中都为 1 的位设为 1
80)两个主要的字符串运算符是什么?
. 运算符返回左右两边字符串的拼接结果。 .= 运算符将右边的结果附加到左边的参数上。
81) 数组运算符 ‘===’ 是什么意思?
$a === $b 如果 $a 和 $b 具有相同顺序和相同类型的键 / 值对,则为 TRUE 。
82) $a != $b 和 $a !== $b 有什么区别?
!= 表示不等于 (如果 $a 不等于 $b 则为 TRUE) ; !== 表示 不全等 ( 如果 $a 不完全等于 $b 则为 TRUE).
83) 如何确定 PHP 变量是否是某个类的实例化对象?
我们用 instanceof 能够验证 PHP 变量是否是某个类的实例话对象。
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 (全部字符串,要查找的字符串) 返回从首次出现到全部字符串结束的部分字段串。 这个函数是区分大小写的。 stristr () 除了不区分大小写之外,与 strstr () 完全相同。
90) for 和 foreach 有什么区别?
for 表示如下:
for (expr1; expr2; expr3)
expr1 在开头执行一次。 在每次迭代中,expr2 都会被评估。 如果评估结果是 TRUE, 循环继续, 并执行 for 中的语句。 如果评估结果是 FALSE, 循环结束。expr3 在每次迭代结束时进行测试。
但是,foreach 提供了一种遍历数组的简便方法,并且仅与数组和对象一起使用。
91) 是否可以提交带有专用按钮的表单?
可以使用 document.form.submit () 函数提交表单。 例如:
92) ereg_replace () 和 eregi_replace () 有什么区别?
函数 eregi_replace () 与 ereg_replace () 相同,只是在匹配字母字符时忽略大小写区别。
93) 是否可以保护查询字符串中的特殊字符?
是的, 我们使用 urlencode () 函数 来保护特殊字符。
94) PHP 中可能出现的三类错误是什么?
三类基本错误类别是: 通知 (非关键错误)、警告 (严重错误) 和 致命错误 (严重错误)。
95) 字符串 .34 和 .34 有什么区别
.34 是八进制 34 , .34 是十六进制 34.
96) 我们如何通过页面之间的导航传递变量?
可以使用会话,cookie 或隐藏的表单字段在 PHP 页面之间传递变量。
97) 是否可以延长 PHP 脚本的执行时间
使用 set_time_limit (int seconds) 可以延长 PHP 脚本的执行时间。 默认限制为 30 秒。
98) 是否可以销毁 Cookie ?
是的,可以通过设置 cookie 的过期时间来实现。
99) PHP 中的默认会话时间是什么?
php 中的默认会话时间是直到浏览器关闭为止。
100) 是否可以在 PHP 中 使用 COM 组件?
是的, 可以在框架中提供的 PHP 脚本中集成(分布式)组件对象模型组件((D)COM)。
101) 解释是否可以在多个 PHP 项目之间共享单个 memcache 实例?
是的,可以在多个项目之间共享一个 Memcache 实例。 Memcache 是??一个内存存储空间,您可以在一个或多个服务器上运行 memcache。您还可以将客户端配置为与特定实例集进行对话。因此,您可以在同一主机上运行两个不同的 Memcache 进程,但它们是完全独立的。除非您已经对数据进行了分区,否则有必要知道从哪个实例获取数据或将数据放入哪个实例。
102) 解释你对 PHP 进行更改时如何更新 Memcached?
当 PHP 更改时,您可以通过以下方式更新 Memcached
主动清除缓存: 进行插入或更新时清除缓存
重置缓存: 与第一种方法类似,但不仅仅是删除键并等待下一个数据刷新缓存的请求,而是在插入或更新后重置值。
喜欢我的文章就关注我吧,持续更新中.........
相关推荐
- 教你把多个视频合并成一个视频的方法
-
一.情况介绍当你有一个m3u8文件和一个目录,目录中有连续的视频片段,这些片段可以连成一段完整的视频。m3u8文件打开后像这样:m3u8文件,可以理解为播放列表,里面是播放视频片段的顺序。视频片段像这...
- 零代码编程:用kimichat合并一个文件夹下的多个文件
-
一个文件夹里面有很多个srt字幕文件,如何借助kimichat来自动批量合并呢?在kimichat对话框中输入提示词:你是一个Python编程专家,完成如下的编程任务:这个文件夹:D:\downloa...
- Java APT_java APT 生成代码
-
JavaAPT(AnnotationProcessingTool)是一种在Java编译阶段处理注解的工具。APT会在编译阶段扫描源代码中的注解,并根据这些注解生成代码、资源文件或其他输出,...
- Unit Runtime:一键运行 AI 生成的代码,或许将成为你的复制 + 粘贴神器
-
在我们构建了UnitMesh架构之后,以及对应的demo之后,便着手于实现UnitMesh架构。于是,我们就继续开始UnitRuntime,以用于直接运行AI生成的代码。PS:...
- 挣脱臃肿的枷锁:为什么说Vert.x是Java开发者手中的一柄利剑?
-
如果你是一名Java开发者,那么你的职业生涯几乎无法避开Spring。它如同一位德高望重的老国王,统治着企业级应用开发的大片疆土。SpringBoot的约定大于配置、SpringCloud的微服务...
- 五年后,谷歌还在全力以赴发展 Kotlin
-
作者|FredericLardinois译者|Sambodhi策划|Tina自2017年谷歌I/O全球开发者大会上,谷歌首次宣布将Kotlin(JetBrains开发的Ja...
- kotlin和java开发哪个好,优缺点对比
-
Kotlin和Java都是常见的编程语言,它们有各自的优缺点。Kotlin的优点:简洁:Kotlin程序相对于Java程序更简洁,可以减少代码量。安全:Kotlin在类型系统和空值安全...
- 移动端架构模式全景解析:从MVC到MVVM,如何选择最佳设计方案?
-
掌握不同架构模式的精髓,是构建可维护、可测试且高效移动应用的关键。在移动应用开发中,选择合适的软件架构模式对项目的可维护性、可测试性和团队协作效率至关重要。随着应用复杂度的增加,一个良好的架构能够帮助...
- 颜值非常高的XShell替代工具Termora,不一样的使用体验!
-
Termora是一款面向开发者和运维人员的跨平台SSH终端与文件管理工具,支持Windows、macOS及Linux系统,通过一体化界面简化远程服务器管理流程。其核心定位是解决多平台环境下远程连接、文...
- 预处理的底层原理和预处理编译运行异常的解决方案
-
若文章对您有帮助,欢迎关注程序员小迷。助您在编程路上越走越好![Mac-10.7.1LionIntel-based]Q:预处理到底干了什么事情?A:预处理,顾名思义,预先做的处理。源代码中...
- 为“架构”再建个模:如何用代码描述软件架构?
-
在架构治理平台ArchGuard中,为了实现对架构的治理,我们需要代码+模型描述所要处理的内容和数据。所以,在ArchGuard中,我们有了代码的模型、依赖的模型、变更的模型等,剩下的两个...
- 深度解析:Google Gemma 3n —— 移动优先的轻量多模态大模型
-
2025年6月,Google正式发布了Gemma3n,这是一款能够在2GB内存环境下运行的轻量级多模态大模型。它延续了Gemma家族的开源基因,同时在架构设计上大幅优化,目标是让...
- 比分网开发技术栈与功能详解_比分网有哪些
-
一、核心功能模块一个基本的比分网通常包含以下模块:首页/总览实时比分看板:滚动展示所有正在进行的比赛,包含比分、比赛时间、红黄牌等关键信息。热门赛事/焦点战:突出显示重要的、关注度高的比赛。赛事导航...
- 设计模式之-生成器_一键生成设计
-
一、【概念定义】——“分步构建复杂对象,隐藏创建细节”生成器模式(BuilderPattern):一种“分步构建型”创建型设计模式,它将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建...
- 构建第一个 Kotlin Android 应用_kotlin简介
-
第一步:安装AndroidStudio(推荐IDE)AndroidStudio是官方推荐的Android开发集成开发环境(IDE),内置对Kotlin的完整支持。1.下载And...
- 一周热门
-
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
飞牛OS入门安装遇到问题,如何解决?
-
系统C盘清理:微信PC端文件清理,扩大C盘可用空间步骤
-
10款高性能NAS丨双十一必看,轻松搞定虚拟机、Docker、软路由
-
python使用fitz模块提取pdf中的图片
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)