文章图片
Hypertext Preprocessor 也缩写为 PHP,是一种广泛使用的脚本语言,专门用于 Web 开发,可以嵌入到 HTML 中,主要在服务器中执行。这种开源语言创建于 1994 年,现在由 PHP 小组管理。该语言可以在 Windows、Linux、MacOSX 等各种平台上运行,并兼容当今使用的大多数服务器,如 Apache 和 IIS;该语言还支持广泛的数据库。
因此,如果你渴望成为一名 PHP 开发人员,我们收集了一系列流行的 PHP 面试问题,如果你是新手,可以开始你的旅程,如果你是专业的并希望提升技能,则可以为你的旅程做出贡献。
最佳PHP面试题和答案合集一旦你仔细检查了所有 PHP 核心概念并努力构建最佳 PHP 框架的充分性,就该评估你的表现如何了。为了帮助你,我们在这里整理了一份最常见的 PHP 面试问题列表,以确保你答对了:
初级面试问题
问题:什么是PHP?答: PHP(超文本预处理器)是一种通用脚本语言,主要用 C 和 C++ 实现,适用于 Web 开发。它是一种高性能语言,因为代码在执行前不需要编译。PHP 是免费和开源的,很容易学习。它也具有成本效益,因为大多数网络托管服务器默认支持 PHP。PHP 是 2021 年最流行的编程语言之一。 示例代码:
<
?PHP
echo 'Good morning';
?>
PHP常见面试题有哪些:PHP7.4有什么特点?答: PHP7.4 的一些新特性是:
- 预加载以进一步提高性能。
- 数组展开运算符。
- 用于更清晰代码的单行箭头函数(短闭包)。
- 类中的类型属性。
- 使用下划线格式化数值。
- 使用 FFI 进行扩展开发。
- 一种更好的方差。
答: $message 是一个普通变量,有固定的名称和固定的值,而 $$message 是一个引用变量,它存储有关变量的数据。$$message 的值可以随着变量值的变化而动态变化。
问题:解释一下 PHP 中的魔法常量?答案:魔术常量以双下划线开头和结尾,是预定义的常量,可根据上下文和用法更改其值。PHP 中有 9 个魔法常量:
__LINE__, __FILE__, __DIR__, __FUNCTION__, __CLASS__, __TRAIT__, __METHOD__, __NAMESPACE__, ClassName::class
问题:解释PHP的各种数据类型?PHP面试题解析: PHP 中有不同的数据类型:
- String:字符序列,例如“lsbin.com”。
- Float:浮点(十进制)数,例如 23.456
- Integer:一个整数,例如 12
- Boolean:代表两种状态——真、假。
- 对象:将不同数据类型的值存储到单个实体中,例如。苹果 = 新水果();
- Array:存储多个相同类型的值,例如。Array(“红色”,“黄色”,“蓝色”)
- NULL:当一个变量没有赋值时,可以赋值为NULL。例如,$msg = NULL;
问题:解释各种 PHP 数组函数?答:数组函数有很多,都是PHP核心的一部分:
数组函数 | 描述 |
array() | 创建一个数组。 |
array_diff() | 比较数组并返回值的差异。 |
array_keys() | 返回数组的所有键。 |
array_reverse() | 反转数组。 |
array_search() | 搜索一个值并返回相应的键。 |
array_slice() | 返回数组的特定部分。 |
array_sum() | 对数组的所有值求和。 |
count() | 数组的元素数。 |
索引数组 | 关联数组 |
有数字键或索引。 | 每个键都有其值。 |
索引从 0 开始并自动分配。 | 键是手动分配的,也可以是字符串。 |
例子,$fruits = array(“orange”, “apple”, banana);
在这里,橙色是 $fruits[0],苹果是 $fruits[1],香蕉是 $fruits[2] | 例子,$empdetails = array(“Sam”=>
1200, “Mike”=>
1201, “Mac”=>
1202);
在这里,可以访问各个值,$empdetails[“Sam”] = “1200”;
同样,其他 |
功能 | 描述 | 示例用法 |
echo() | 输出一个或多个字符串 | echo "欢迎来到 lsbin.COM " |
explode() | 将字符串分解为数组 | $mystr = “welcome to lsbin.com” explode(“ ”, $mystr) |
ltrim() | 从字符串的左侧删除多余的字符或空格 | ltrim( $mystr , ".... 你好" ) |
parse_str() | 将查询字符串解析为变量 | parse_str ( "empId=1234& name=Sam" ); |
str_replace() | 替换字符串的指定字符 | str_replace ( "mysite" , "lsbin.com" , "Welcome to mysite" ); |
str_split() | 将字符串拆分为字符数组 | str_split(“欢迎”) |
str_word_count() | 字符串的字数 | str_word_count ( "我叫山姆" );
结果 = 4 |
strlen() | 计算字符串的长度 | strlen ( "欢迎" );
结果 = 7 |
strncmp() | 比较字符串的前几个字符 | strncmp("welcome to mysite","welcome to lsbin.com", 11); 如果前 11 个字符相同,则结果 = 0 |
问题:解释 require 和 include 之间的区别?答: require 和 include 都是构造函数,可以不带括号调用:include myfile.php
但是,如果未找到要包含的文件,include 将发出警告,并且脚本将继续运行。Require 将给出一个致命错误,脚本将在那时和那里停止。如果文件对脚本至关重要,则应使用 require ,否则可以使用它。
中级面试题
PHP常见面试题有哪些:如何在PHP中上传文件?答:首先,PHP 应该允许文件上传;这可以通过使指令 file_uploads = On 来完成
然后,你可以将操作方法??添加为“post”,编码类型为“multipart/form-data”。
<
formaction= "myupload.php" method= "post" enctype= "multipart/form-data" >
myupload.php 文件包含特定于要上传的文件类型的代码,例如图像、文档等,以及目标路径、大小和其他参数等详细信息。
然后,你可以编写 HTML 代码以通过将输入类型指定为“文件”来上传所需的文件。
问题:如何在PHP中创建数据库连接和查询?答:要创建数据库连接:
$connection = new mysqli($servername, $username, $password);
where $servername, $username, $password should be defined beforehand by the developer.
To check if the connection was successful:
if ($conn->connect_error) {
die("Connection error: " . $conn->connect_error);
}
Create database query:
$sql = "CREATE DATABASE PRODUCT";
if ($conn->query($sql) === TRUE) {
echo "Database successfully created";
} else {
echo "Error while creating database: " . $conn->error;
}
问题:解释 Cookies?如何在 PHP 中创建 cookie?PHP面试题解析: Cookie 将有关用户的数据存储在浏览器上。它用于识别用户并在用户请求特定页面时嵌入在用户的计算机上。我们可以使用 setcookie() 函数在 PHP 中创建 cookie:
setcookie(name, value , expire, path, domain, secure, httponly);
这里 name 是必需的,所有其他参数都是可选的。
例子,
setcookie(“instrument_selected”, “guitar”)
PHP面试题和答案合集:解释解析器在 PHP 中的重要性?答: PHP 解析器是一种转换计算机可以理解的源代码的软件。这意味着我们以代码形式给出的任何指令集都会被解析器转换为机器可读的格式。你可以使用 token_get_all 函数使用 PHP 解析 PHP 代码。
问题:解释 constant() 函数及其用途?答: constant() 用于检索常量的值。它接受常量的名称作为输入:
constant(string $name)
该函数返回一个常量值(如果可用),否则返回 null。
问题:你能否提供一个 PHP Web 应用程序架构的示例?
文章图片
答:
问:定义PHP中.htaccess和php.ini文件的使用?
答:它们都用于更改 PHP 设置。
- .htaccess – 可用于更改或管理网站行为的特殊文件。将所有用户定向到一个页面并将域的页面重定向到 https 或 www 是该文件的两个最重要的用途。要使 .htaccess 工作,PHP 需要作为 Apache 模块安装。
- php.ini – 这个特殊文件允许更改默认的 PHP 设置。可以编辑默认的 php.ini 文件,或者可以创建一个带有相关添加项的新文件,然后将其保存为 php.ini 文件。要使 php.ini 工作,PHP 需要作为 CGI 运行。
问题:解释路径遍历?答:路径遍历是一种读取 Web 应用程序文件的攻击形式。'../' 被称为点-点序列。上目录是一个跨平台的符号。为了操作 Web 应用程序文件,路径遍历使用了点-点-斜线序列。
攻击者可以在 Web 服务器或应用程序的根目录之外使用路径遍历来披露被攻击文件的内容。通常这样做是为了获取文件中存储的访问令牌、秘密密码和其他敏感信息。
路径遍历也称为目录遍历。它使攻击者能够利用受攻击的 Web 文件中存在的漏洞。
问题:解释 GET 和 POST 请求之间的区别。答:任何 PHP 开发人员都需要对 HTTP 协议有足够的了解。GET和POST的区别是HTTP协议学习中不可缺少的部分。以下是两个请求之间的主要区别:
- GET 允许将提交的数据显示为 URL 的一部分。使用 POST 时情况并非如此,因为在此期间,数据已在请求中编码。
- GET 处理的最大字符数限制为 2048。POST 没有此类限制。
- GET 仅支持 ASCII 数据。另一方面,POST 允许 ASCII、二进制数据以及其他形式的数据。
- 通常,GET 用于检索数据,而 POST 用于插入和更新数据。
邮件(收件人、主题、消息、标题、参数);
- to 表示电子邮件的接收者
- 主题表示电子邮件的主题
- message 是要在邮件中发送的实际消息(每行使用 /n 分隔,最大字符限制为 70。)
- 标头表示有关邮件的附加信息,例如 CC 和 BCC(可选)
- 参数表示要包含在发送邮件程序中的一些附加参数(可选)
问:PHP 中的 Memcache 和 Memcached 是什么?是否可以在多个 PHP 项目之间共享 Memcache 的单个实例?答: Memcached 是一个有效的缓存守护进程,专为减少动态 Web 应用程序中的数据库负载而设计。Memcache 模块为 Memcached 提供了一个方便的过程和面向对象的接口。
Memcache 是一个内存存储空间,可以在单个或多个服务器上运行 Memcache。因此,可以在多个项目之间共享 Memcache 的单个实例。
可以将客户端配置为与一组不同的实例对话。因此,也允许在同一主机上运行两个不同的 Memcache 进程。尽管运行在同一台主机上,但除非存在数据分区,否则这两个 Memcache 进程都保持独立。
问题:当 PHP 发生变化时,如何更新 Memcached?答: PHP代码有改动时更新Memcached有两种方式:
- 主动清除缓存 - 这意味着在进行插入或更新时清除缓存
- 重置缓存 – 插入或更新后重置值
问题:在 PHP 中如何实现类型转换?答:输出类型的名称需要在要转换的变量前的括号中指定。一些例子是:
- (array) – 转换为数组
- (bool), (boolean) – 转换为布尔值
- (double), (float), (real) – 转换为浮动
- (int), (integer) – 转换为整数
- (object) – 转换为对象
- (string) – 转换为字符串
<
!--?php $database = mysqli_connect("HOST", "USER_NAME", "PASSWORD");
mysqli_select_db($database,"DATABASE_NAME");
?-->
问题:PHP 中的构造函数和析构函数是什么?你能提供一个例子吗?PHP面试题解析: PHP 中的构造函数和析构函数是一种特殊类型的函数,分别在创建和销毁 PHP 类对象时自动调用。
构造函数用于初始化类的私有变量,而析构函数则释放类创建或使用的资源。
这是一个演示构造函数和析构函数概念的代码示例:
<
?php
class ConDeConExample {
private $name;
private $link;
public function __construct($name) {
$this->name = $name;
} # Constructor
public function setLink(Foo $link){
$this->link = $link;
}
public function __destruct() {
echo 'Destroying: ', $this->name, PHP_EOL;
} # Destructor
}
?>
问题:PHP 中有哪些常见的错误类型?答: PHP 支持三种类型的错误:
- 注意 – 非严重错误。这些发生在脚本执行期间。访问一个未定义的变量是一个 Notice 的实例。
- 警告 - 比通知具有更高优先级的错误。与通知一样,包含警告的脚本的执行保持不间断。通知的示例包括一个不存在的文件。
- 致命错误 - 一旦遇到此类错误,就会导致脚本执行终止。访问不存在对象的属性会产生致命错误。
- 对 64 位整数的支持——虽然 PHP 7 内置了对原生 64 位整数和大文件的支持,但 PHP 5 不提供对其中任何一个的支持。
- 性能——PHP 7 的性能远好于 PHP 5。PHP 7 使用 PHP-NG(NG 代表下一代),而 PHP 5 依赖于 Zend II。
- 返回类型——PHP 5 最重要的缺点之一是它不允许定义函数的返回类型。PHP 7 消除了这个限制,它允许开发人员定义代码中任何函数返回的值的类型。
- 错误处理——在 PHP 5 中管理致命错误极其困难。相反,PHP 7 带有一个新的异常对象引擎。它有助于管理几个主要的严重错误,这些错误现在已被异常所取代。
- 匿名类 - 为了只执行一次类,为了增加执行时间,我们在 PHP 7 中有匿名类。它在 PHP 5 中不可用。
- 组使用声明——PHP 7 允许从同一个命名空间导入的所有类、常量和函数被分组在一个单次使用语句中。这称为组使用声明。该功能在 PHP 5 中不可用。
- 新运算符 – PHP 7 中引入了几个新运算符,包括“< => ”和“??” 前者称为三路比较运算符,后者称为空合并运算符。
- mysqli_fetch_array
- mysqli_fetch_assoc
- mysqli_fetch_object
- mysqli_fetch_row
问题:PHP 中的会话是什么?编写一个代码示例来演示删除会话数据。回答:根据唯一会话 ID 存储单个用户数据的最简单方法是使用 PHP 会话。它用于维护服务器上的状态以及跨多个页面共享数据。这需要完成,因为HTTP 是一种无状态协议。
通常,会话 ID 使用会话 cookie 发送到浏览器。ID 用于检索现有会话数据。如果会话 ID 在服务器上不可用,PHP 将创建一个新会话,然后生成一个新的会话 ID。
这是用于演示如何删除会话数据的程序:
<
?php
session_start();
$_SESSION[
'user_info'] = [
'user_id' =>1,
'first_name' =>
'Hacker', 'last_name' =>
'.io', 'status' =>
'active'];
if (isset($_SESSION[
'user_info']))
{
echo "logged In";
}
unset($_SESSION[
'user_info'][
'first_name']);
session_destroy();
// Removal of entire session data
?>
问题:你认为最好的密码散列方法是什么?答:与其使用典型的散列算法,包括 md5、sha1 和 sha256,不如使用 crypt() 或 hash()。虽然 crypt() 为多种散列算法提供本机支持,但 hash(,) 为更多散列算法提供支持。
PHP面试题和答案合集:为什么 JavaScript 和 PHP 不能直接交互?你知道任何解决方法吗?答: JS 和 PHP 之间不可能直接交互,因为前者是客户端语言,而后者是服务器端语言。两种主要编程语言之间的间接交互可以使用交换变量进行。
由于两个原因,可以进行这种变量交换:
- PHP 可以生成由浏览器执行的 JavaScript 代码
- 通过 URL 将特定变量传递回 PHP 是可以实现的。因为 PHP 总是在 JavaScript 之前执行,所以必须通过表单或 URL 传递 JS 变量。为了传递变量,使用了 GET 和 POST。同样,要检索传递的变量,使用 $_GET 和 $_POST。
<
?Php
$date1 = ‘2019-01-11’;
# Date 1
$date2 = ‘2019-01-09’;
# Date 2
$days = (strtotime($date1)-strtotime($date2))/(60*60*24);
echo $days;
?>
输出:
1
问题:简要解释 PHP 和一些流行的 PHP 框架。答: PHP 是一种流行的服务器端脚本语言,开发人员使用它来动态创建网页。最初,PHP 意味着个人主页。然而,今天它代表递归首字母缩略词 PHP:超文本预处理器。
到目前为止,有多种 PHP 框架可用。三种最流行的PHP框架简要说明如下:
- CodeIgniter – 简单而强大,CodeIgniter 是一个令人难以置信的轻量级 PHP 框架,具有轻松的安装过程和极简的配置要求。完整的框架只有 2 MB,包括文档在内。由于它带有许多有助于开发强大、可重用组件的预构建模块,因此 CodeIgniter 非常适合开发动态网站。流行的 PHP 框架还在专用和共享托管平台上提供流畅的工作体验。
- Laravel——虽然不像其他一些流行的 PHP 框架那么古老,但 Laravel 可能是最受欢迎的 PHP 框架。PHP 框架于 2011 年推出,其广受欢迎可归功于它为处理复杂的 Web 应用程序提供额外的速度和安全性的能力。Laravel 还通过降低重复性任务(包括身份验证、路由、会话和排队)的复杂性来简化开发过程。
- Symfony——自 2005 年发布以来,PHP 开发人员一直在使用,Symfony 是一种流行的 PHP 框架,它经受住了时间的考验。在将近一年半的时间里,它已经成熟。Symfony 是一个广泛的 PHP 框架,它是唯一完全遵循 PHP 和 Web 标准的 PHP 框架。Drupal、OroCRM 和 PHPBB 等流行的 CMS 使用了各种 Symfony 组件。
- Codeigniter 教程和课程
- Laravel 教程和课程
- Symfony 教程和课程
- 访问和/或写入服务器上存在的文件
- 与其他服务器交互
- 处理用户输入
- 查询和处理数据库
- 构建网络应用程序
CSS、HTML、JavaScript 和 VBScript 是流行的客户端编程语言。客户端编程语言允许:
- 开发交互式网页
- 与临时存储和/或本地存储交互
- 向服务器发出数据和/或其他请求
- 提供服务器和最终用户之间的接口
- 虽然很少使用,但 echo 具有接受多个参数的能力。相反,print 语句只能接受一个参数
- Echo 没有返回值,而 print 的返回值是 1。因此,后者是在表达式中使用的首选选项
- 通常,echo 语句比 print 语句更受欢迎,因为它稍微快一点
- 优势 – 静态网站的主要优势是灵活性,而动态网站的主要优势在于 CMS 的形式
- 更改/修改 – 仅在文件更新和发布(即发送到网络服务器)时才对静态网站的内容进行更改。另一方面,动态网站包含“服务器端”代码,允许服务器在加载网页时生成独特的内容
- 内容 – 每次为静态网站重新加载页面时,内容都保持不变。相反,属于动态网站的内容会定期更新
- 响应——静态网站为每个请求发送相同的响应,而动态网站可能为不同的请求生成不同的 HTML
- 涉及的技术 – 纯 HTML 用于构建静态网站,而动态网站则使用多种技术开发,例如 ASP.Net、JSP、Servlet 和 PHP
问题:你能解释一下 PHP 中“按值传递变量”和“按引用传递变量”的区别吗?答:按值传递变量是指将变量的值直接传递给被调用函数。然后它使用存储在变量中的值。对函数所做的任何更改都不会影响源变量。
通过引用传递变量意味着将存储值的变量的地址传递给被调用的函数。它使用存储在传递地址中的值。对函数所做的任何更改都会影响源变量。
问题:你如何理解类型转换和类型杂耍?答:当变量的数据类型由用户显式转换时,称为类型转换。PHP 编程语言不支持变量声明中的显式类型定义。因此,变量的数据类型由使用变量的上下文决定。
例如,如果将字符串值分配给 $var 变量,则它会自动转换为字符串。同样,如果一个整数值被分配给 $var,那么它就变成了一个整数。这称为类型杂耍。
PHP常见面试题有哪些:你能解释一下如何使用 PHP 从 MySQL 数据库中获取数据吗?答:首先,你需要先与要使用的 MySQL 数据库建立连接。为此,你可以使用 mysqli_connect() 函数。
假设你需要访问的数据库存储在名为 localhost 且名为 instanceDB 的服务器上。此外,它的用户名是 user_name,密码是 pass_word。
要建立与 instanceDB 的连接,你需要使用以下 PHP 代码:
<
?php
$servername = “localhost”;
$username = “user_name”;
$password = “pass_word”;
$dbname = “instanceDB”;
$conn = new mysqli($servername, $username, $password, $dbname);
if (!$conn) { // For checking connection to the database
die(“Connection failed: ” . mysqli_connect_error());
}
接下来,你需要使用 SELECT 语句从一个或多个表中获取数据。一般语法是:
SELECT column_name from table_name
假设我们在instanceDB中有一个名为instancetable的表,其中包含column_1、column_2和column_3,然后去取数据;我们需要添加以下PHP代码:
$sql = “SELECT column_1, column_2, column_3 from instancetable”;
$result = $conn->query($sql);
问题:你将如何使用 PHP Script 显示文本?答: echo 语句或print 语句均可用于显示带有PHP 脚本的文本。在通常情况下,前者比后者更受欢迎,因为它稍微快一些。
问题:最流行的基于 PHP 的内容管理系统 (CMS) 有哪些?答:当今有大量基于 PHP 的内容管理系统在使用。Drupal、Joomla 和 WordPress 是其中最受欢迎的。
问题:你能解释一下 PHP 参数化函数吗?答:带参数的函数称为 PHP 参数化函数。可以在函数内部传递任意数量的参数。在函数名后的括号内指定,这些所有参数都充当 PHP 参数化函数内的变量。
问题:你能解释一下 mysqli_connect() 和 mysqli_pconnect() 函数之间的区别吗?答: mysqli_connect() 和 mysqli_pconnect() 都是 PHP 中用于连接 MySQL 数据库的函数。但是,后者确保与数据库建立持久连接。这意味着连接不会在 PHP 脚本结束时关闭。
问题:解释PHP中的$_SESSION?答: $_SESSION[] 在 PHP 中称为关联数组。它用于存储可以在会话的整个生命周期内访问的会话变量。
问题:解释 substr() 和 strstr() 函数之间的区别?【开发面试必备(PHP面试题和答案合集解析)】PHP面试题解析: substr() 函数返回某个字符串的一部分。它有助于在 PHP 中逐部分拆分字符串。此函数通常可用于所有具有几乎相同语法的编程语言。
一般语法:
substr(string, start, length);
strstr() 函数用于在 PHP 中的另一个字符串中搜索一个字符串。与 substr() 函数不同,strstr() 是一个区分大小写的函数。
一般语法:
strstr(string, search, before_string);
问题:解释一下 $_REQUEST 变量的使用?答案: $ _ REQUEST 是一个关联数组,默认情况下包含 $_COOKIE、$_GET、$_POST 超全局变量的内容。
因为 $_REQUEST 数组中的变量是通过 COOKIE、GET 和 POST 输入机制提供给 PHP 脚本的,所以远程用户可以修改它。$_REQUEST 数组中列出的变量及其顺序在 PHP variables_order 配置指令中定义。
PHP面试题和答案合集:请列举 PHP 中 for 和 foreach 循环的主要区别?答:以下是 for 和 for 每个循环之间的显着区别:
- for-each 循环通常用于动态数组
- for 循环有一个计数器,因此需要额外的内存。for-each 循环没有计数器,因此不需要额外的内存
- 使用 for 循环时,你需要确定循环执行的次数。但是,在使用 for each 循环时不需要这样做
<
input type=button value=https://www.lsbin.com/“SUBMIT” onClick=“document.form.submit()”>
问题:请解释是否可以扩展最终定义的类?答:不,不可能扩展最终定义的类。final 关键字阻止类扩展。当与方法一起使用时,final 关键字可防止它被覆盖。
问:是否可以延长 PHP 脚本的执行时间?如何?答:是的,可以延长 PHP 脚本的执行时间。我们有 set_time_limit(int seconds) 函数。你需要指定要延长 PHP 脚本执行时间的持续时间(以秒为单位)。默认时间为 30 秒。
概括目前为止就这样了!这里有一些重要的PHP 教程,以防万一。保持冷静,在重要的一天保持自信。
尽管对技术概念有很好的理解很重要,但你的演示文稿也是需要审核的。
推荐阅读
- 热门React常见的面试题和答案合集介绍
- OLAP与OLTP差异比较(有什么区别())
- C#和Java差异比较(有什么区别(哪个更好?))
- C和C++有什么区别(哪个更好?应该选择哪个?)
- 常用的Python框架有哪些(最佳Python框架合集介绍)
- NoSQL与SQL有什么区别(比较、特性、应用)
- MongoDB和MySQL差异比较(有什么区别(哪个更好?))
- 敏捷与瀑布方法差异比较(它们有什么区别())
- PHP与Node.js差异比较(它们有什么区别())