PHP面试题


亲爱的读者,这些PHP 编程语言面试问题是专门为让您熟悉PHP 编程语言面试过程中可能遇到的问题的性质而设计的。根据我的经验,好的面试官几乎不会计划在面试过程中提出任何特定问题,通常问题从主题的一些基本概念开始,然后根据进一步的讨论和你的回答继续 -

PHP 是“PHP:超文本预处理器”的递归缩写。PHP 是一种嵌入在 HTML 中的服务器端脚本语言。它用于管理动态内容、数据库、会话跟踪,甚至构建整个电子商务网站。

PHP 的常见用途 -

  • PHP 执行系统功能,即它可以从系统上的文件创建、打开、读取、写入和关闭它们。

  • PHP可以处理表单,即从文件中收集数据,将数据保存到文件中,通过电子邮件您可以发送数据,将数据返回给用户。

  • 您可以通过 PHP 添加、删除、修改数据库中的元素。

  • 访问 cookie 变量并设置 cookie。

  • 使用 PHP,您可以限制用户访问您网站的某些页面。

  • 它可以加密数据。

所有 PHP 代码必须包含在 PHP 解析器可识别的三个特殊标记之一中。

<?php PHP code goes here ?>
<?    PHP code goes here ?>
<script language="php"> PHP code goes here </script>
Most common tag is the <?php...?>

PHP 配置文件 php.ini 是影响 PHP 功能的最终也是最直接的方法。每次 PHP 初始化时都会读取 php.ini 文件。换句话说,每当为模块版本重新启动 httpd 或为 CGI 版本执行每个脚本时,都会读取 php.ini 文件。如果您的更改没有显示,请记住停止并重新启动 httpd。如果仍然没有显示,请使用 phpinfo() 检查 php.ini 的路径。

PHP 解析引擎需要一种方法将 PHP 代码与页面中的其他元素区分开来。这样做的机制称为“转义至 PHP”。

空白是您键入的内容,通常在屏幕上不可见,包括空格、制表符和回车符(行尾字符)。PHP 空格不敏感意味着一行中有多少个空格字符几乎无关紧要。一个空格字符与许多此类字符相同。

不,PHP 部分区分大小写。

以下是有关 PHP 变量的最重要的知识。

  • PHP 中的所有变量均以美元符号 ($) 开头。

  • 变量的值是其最近赋值的值。

  • 变量使用 = 运算符进行赋值,变量位于左侧,要计算的表达式位于右侧。

  • 变量可以但不需要在赋值之前声明。

  • PHP 中的变量没有内在类型 - 变量事先不知道它将用于存储数字还是字符串。

  • 在分配之前使用的变量具有默认值。

  • PHP 在必要时自动将一种类型转换为另一种类型方面做得很好。

  • PHP 变量与 Perl 类似。

PHP 共有八种数据类型,我们用它们来构造变量 -

  • 整数- 是没有小数点的整数,例如 4195。

  • 双精度数 - 是浮点数,例如 3.14159 或 49.1。

  • 布尔值- 只有两个可能的值:true 或 false。

  • NULL - 是一种特殊类型,只有一个值:NULL。

  • 字符串- 是字符序列,例如“PHP 支持字符串操作”。

  • 数组- 是其他值的命名和索引集合。

  • 对象- 是程序员定义的类的实例,它可以打包特定于该类的其他类型的值和函数。

  • 资源- 是保存对 PHP 外部资源(例如数据库连接)的引用的特殊变量。

命名变量的规则如下 -

  • 变量名称必须以字母或下划线字符开头。

  • 变量名可以由数字、字母、下划线组成,但不能使用 + 、 - 、 % 、 ( 、 ) 等字符。& , ETC

以下是确定任何尚未属于布尔类型的值的“真实性”的规则 -

  • 如果该值是数字,则如果完全等于零,则为 false,否则为 true。

  • 如果该值是字符串,则如果该字符串为空(有零个字符)或者是字符串“0”,则为 false,否则为 true。

  • NULL 类型的值始终为 false。

  • 如果该值是一个数组,如果它不包含其他值,则为 false,否则为 true。对于一个对象来说,包含一个值意味着拥有一个已经被赋值的成员变量。

  • 有效资源为true(尽管某些成功时返回资源的函数在不成功时会返回FALSE)。

  • 不要使用 double 作为布尔值。

NULL 是一种特殊类型,只有一个值:NULL。要给变量赋予 NULL 值,只需像这样分配它 -

$my_var = NULL;

特殊常量NULL按照惯例是大写的,但实际上它不区分大小写;你也可以输入 -

$my_var = null;

已分配 NULL 的变量具有以下属性:

它在布尔上下文中计算结果为 FALSE。

使用 IsSet() 函数测试时返回 FALSE。

要定义常量,您必须使用 Define() 函数;要检索常量的值,您必须简单地指定其名称。与变量不同,您不需要使用带有 $ 的常量。

正如名称所示,该函数将返回常量的值。当您想要检索常量的值,但您不知道其名称(即它存储在变量中或由函数返回)时,这非常有用。

<?php
define("MINSIZE", 50);
echo MINSIZE;
echo constant("MINSIZE"); // same thing as the previous line
?>

常量中只能包含标量数据(布尔值、整数、浮点数和字符串)。

  • 无需在常量前写入美元符号 ($),而在变量中则必须写入美元符号。

  • 常量不能通过简单的赋值来定义,只能使用define()函数来定义。

  • 常量可以在任何地方定义和访问,而不考虑变量作用域规则。

  • 一旦设置了常量,就不能重新定义或取消定义。

PHP 为其运行的任何脚本提供了大量预定义常量,称为魔术常量。

_LINE_ - 文件的当前行号。

_FILE_ - 文件的完整路径和文件名。如果在包含内部使用,则返回包含文件的名称。从 PHP 4.0.2 开始,_FILE_ 始终包含绝对路径,而在旧版本中,在某些情况下它包含相对路径。

_FUNCTION_ - 函数名称。(在 PHP 4.3.0 中添加)从 PHP 5 开始,此常量返回声明时的函数名称(区分大小写)。在 PHP 4 中,它的值始终是小写的。

_CLASS_ - 类名称。(在 PHP 4.3.0 中添加)从 PHP 5 开始,此常量返回声明时的类名(区分大小写)。在 PHP 4 中,它的值始终是小写的。

_METHOD_ - 类方法名称。(在 PHP 5.0.0 中添加)方法名称按其声明的方式返回(区分大小写)。

Break 终止 for 循环或 switch 语句,并将执行转移到紧跟在 for 循环或 switch 后面的语句。

continue 导致循环跳过其主体的其余部分,并在重复之前立即重新测试其条件。

foreach 语句用于循环数组。对于每次传递,当前数组元素的值被分配给 $value 并且数组指针移动一个,并且在下一次传递中将处理下一个元素。

foreach (array as value)
{
    code to be executed;
}

数字数组- 具有数字索引的数组。值以线性方式存储和访问。

关联数组- 以字符串作为索引的数组。这将元素值与键值关联存储,而不是按照严格的线性索引顺序。

多维数组- 包含一个或多个数组和值的数组,使用多个索引进行访问。

要将两个字符串变量连接在一起,请使用点 (.) 运算符 -

<?php
$string1="Hello World";
$string2="1234";
echo $string1 . " " . $string2;
?>

这将产生以下结果 -

Hello World 1234

strlen() 函数用于查找字符串的长度。让我们找到字符串“Hello world!”的长度。-

<?php
echo strlen("Hello world!");
?>

这将产生以下结果 -

12

strpos() 函数用于搜索字符串或字符串中的字符。如果在字符串中找到匹配项,该函数将返回第一个匹配项的位置。如果未找到匹配项,则返回 FALSE。让我们看看是否可以在字符串中找到字符串“world” -

<?php
echo strpos("Hello world!","world");
?>

这将产生以下结果 -

6

PHP 提供了一个函数 getenv() 来访问所有环境变量的值。

PHP 设置的环境变量之一是 HTTP_USER_AGENT,它标识用户的浏览器和操作系统。

PHP rand() 函数用于生成随机数。该函数可以生成给定范围内的数字。应为随机数生成器提供种子,以防止生成规则的数字模式。这是通过使用 srand() 函数来实现的,该函数指定种子号作为其参数。

PHP 默认变量 $_PHP_SELF 用于 PHP 脚本名称,当您单击“提交”按钮时,将调用相同的 PHP 脚本。

PHP header() 函数向浏览器提供原始 HTTP 标头,并可用于将其重定向到另一个位置。重定向脚本应位于页面的最顶部,以防止加载页面的任何其他部分。目标由 Location: 标头指定为 header() 函数的参数。调用此函数后,可以使用 exit() 函数来停止解析其余代码。

HTTP 标头将与我们以 text/html\n\n 形式发送 Content-Type 的实际标头不同。在这种情况下,内容类型将为 application/octet-stream,实际文件名将与其一起连接。例如,如果您想要从给定链接下载 FileName 文件,则其语法如下。

#!/usr/bin/perl
# HTTP Header
print "Content-Type:application/octet-stream; name=\"FileName\"\r\n";
print "Content-Disposition: attachment; filename=\"FileName\"\r\n\n";
# Actual File Content
open( FILE, "<FileName" );
while(read(FILE, $buffer, 100) )
{
   print("$buffer");
}

PHP 提供了 $_GET 关联数组来访问所有使用 GET 方法发送的信息。

PHP 提供了 $_POST 关联数组来访问所有使用 POST 方法发送的信息。

PHP $_REQUEST 变量包含 $_GET、$_POST 和 $_COOKIE 的内容。当我们解释 cookies 时,我们将讨论 $_COOKIE 变量。PHP $_REQUEST 变量可用于获取通过 G​​ET 和 POST 方法发送的表单数据的结果。

array() - 创建一个数组。

sort() - 对数组进行排序。

单引号字符串几乎按字面意思处理,而双引号字符串则用变量的值替换变量,并专门解释某些字符序列。

<?php
$variable = "name";
$literally = 'My $variable will not print!\\n';
print($literally);
print "<br />";
$literally = "My $variable will print!\\n";
print($literally);
?>

这将产生以下结果 -

My $variable will not print!\n
My name will print

要将两个字符串变量连接在一起,请使用点 (.) 运算符。

<?php
$string1="Hello World";
$string2="1234";
echo $string1 . " " . $string2;
?>

这将产生以下结果 -

Hello World 1234

PHP $_REQUEST 变量包含 $_GET、$_POST 和 $_COOKIE 的内容。当我们解释 cookies 时,我们将讨论 $_COOKIE 变量。PHP $_REQUEST 变量可用于获取通过 G​​ET 和 POST 方法发送的表单数据的结果。

有两个 PHP 函数可用于将一个 PHP 文件包含到另一个 PHP 文件中。

  • include() 函数

  • require() 函数

如果加载文件时出现任何问题,则 require() 函数会生成致命错误并停止脚本的执行,而 include() 函数会生成警告,但脚本将继续执行。

PHP fopen() 函数用于打开文件。它需要两个参数,首先说明文件名,然后说明操作模式。“r”模式以只读方式打开文件,并将文件指针放置在文件的开头。

一旦使用 fopen() 函数打开文件,就可以使用名为 fread() 的函数读取该文件。该函数需要两个参数。这些必须是文件指针和以字节表示的文件长度。

可以使用 filesize() 函数找到文件的长度,该函数将文件名作为参数并返回以字节表示的文件大小。

可以使用 file_exist() 函数确认文件的存在,该函数将文件名作为参数。

是的!如果函数的调用者未传递参数,您可以将参数设置为默认值。

PHP 提供了 setcookie() 函数来设置 cookie。此函数最多需要六个参数,并且应在 <html> 标记之前调用。对于每个 cookie,必须单独调用此函数。

setcookie(name, value, expire, path, domain, security);

PHP 提供了多种访问 cookie 的方法。最简单的方法是使用 $_COOKIE 或 $HTTP_COOKIE_VARS 变量。

您可以使用 isset() 函数来检查 cookie 是否已设置。

要删除 cookie,您应该仅使用名称参数调用 setcookie()。

通过调用 session_start() 函数可以轻松启动 PHP 会话。该函数首先检查会话是否已启动,如果没有启动,则启动一个。建议将对 session_start() 的调用放在页面的开头。

会话变量存储在名为 $_SESSION[] 的关联数组中。可以在会话的生命周期内访问这些变量。

使用 isset() 函数检查会话变量是否已设置。

这是取消设置单个变量的示例 -

<?php
   unset($_SESSION['counter']);
?>

PHP 会话可以通过 session_destroy() 函数销毁。

PHP 使用 mail() 函数发送电子邮件。此函数需要三个强制参数,指定收件人的电子邮件地址、消息主题和实际消息,另外还有其他两个可选参数。

mail( to, subject, message, headers, parameters );

这是一个全局 PHP 变量。该变量是一个关联的二维数组,保存与上传文件相关的所有信息。

使用 $_FILES['file']['tmp_name'] - 它提供对 Web 服务器上临时目录中上传文件的访问。

使用 $_FILES['file']['name'] - 它提供上传文件的实际名称。

使用 $_FILES['file']['size'] - 它提供上传文件的大小(以字节为单位)。

使用 $_FILES['file']['type'] - 它提供上传文件的 MIME 类型。

使用 $_FILES['file']['error'] - 它提供与此文件上传相关的错误代码。

$GLOBALS - 包含对当前脚本全局范围内可用的每个变量的引用。该数组的键是全局变量的名称。

$_SERVER - 这是一个包含标题、路径和脚本位置等信息的数组。该数组中的条目由 Web 服务器创建。无法保证每个网络服务器都会提供其中任何一个。有关所有 SERVER 变量的完整列表,请参阅下一节。

$_COOKIE - 通过 HTTP cookie 传递到当前脚本的变量关联数组。

$_SESSION - 包含当前脚本可用的会话变量的关联数组。

$_PHP_SELF - 包含调用它的 PHP 脚本文件名的字符串。

$php_errormsg - $php_errormsg 是一个变量,包含 PHP 生成的最后一个错误消息的文本。

ereg() - ereg() 函数在 string 指定的字符串中搜索由模式指定的字符串,如果找到模式则返回 true,否则返回 false。

eregi() - eregi() 函数在整个由模式指定的字符串中搜索由字符串指定的字符串。搜索不区分大小写。

split() 函数将字符串划分为多个元素,每个元素的边界基于字符串中模式的出现。

preg_match() - preg_match() 函数在字符串中搜索模式,如果模式存在则返回 true,否则返回 false。

preg_split() 函数的操作与 split() 完全相同,只是接受正则表达式作为模式的输入参数。

使用 Exception 类的 getMessage() 方法返回异常消息。

使用 Exception 类的 getCode() 方法返回异常代码。

使用 Exception 类的 getFile() 方法返回源文件名。

使用 Exception 类的 getLine() 方法返回源行。

使用 Exception 类的 getTrace() 方法返回回溯数组。

使用 Exception 类的 getTraceAsString() 方法返回格式化的跟踪字符串。

PHP 的 time() 函数为您提供有关当前日期和时间的所有信息。它不需要参数但返回一个整数。

函数 getdate() 可以选择接受时间戳并返回包含日期信息的关联数组。如果省略时间戳,它将使用 time() 返回的当前时间戳。

date() 函数返回表示日期的格式化字符串。您可以对 date() 返回的格式进行大量控制,并带有必须传递给它的字符串参数。

PHP提供了mysql_connect函数来打开数据库连接。

connection mysql_connect(server,user,passwd,new_link,client_flag);

PHP 使用 mysql_query 函数创建 MySQL 数据库。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。

bool mysql_query( sql, connection );

PHP 提供的最简单的函数 mysql_close 用于关闭数据库连接。该函数获取 mysql_connect 函数返回的连接资源。成功时返回 TRUE,失败时返回 FALSE。

bool mysql_close ( resource $link_identifier );

如果未指定资源,则关闭最后打开的数据库。

PHP 5 的新 SimpleXML 模块使解析 XML 文档变得非常简单。它将 XML 文档转换为提供对 XML 的结构化访问的对象。要从存储在字符串中的 XML 文档创建 SimpleXML 对象,请将字符串传递给 simplexml_load_string( )。它返回一个 SimpleXML 对象。

是的!

PHP 提供了一个名为 __construct() 的特殊函数来定义构造函数。您可以将任意数量的参数传递到构造函数中。

与构造函数一样,您可以使用函数 __destruct() 定义析构函数。您可以在析构函数中释放所有资源。

变量 $this 是一个特殊变量,它引用同一个对象,即。本身。

一旦定义了类,您就可以创建任意数量的该类类型的对象。以下是如何使用 new 运算符创建对象的示例。

$physics = new Books;
$maths = new Books;
$chemistry = new Books;

创建对象后,您将能够调用与该对象相关的成员函数。一个成员函数只能处理相关对象的成员变量。下面的示例展示了如何通过调用成员函数来设置三本书的标题和价格。

$physics−>setTitle( "Physics for High School" );
$chemistry−>setTitle( "Advanced Chemistry" );
$maths−>setTitle( "Algebra" );
$physics−>setPrice( 10 );
$chemistry−>setPrice( 15 );
$maths−>setPrice( 7 );

子类中的函数定义会覆盖父类中同名的函数定义。在子类中,我们可以修改从父类继承的函数的定义。

定义接口是为了向实现者提供通用的函数名称。不同的实现者可以根据自己的需求实现这些接口。可以说,接口是由开发人员实现的骨架。

PHP 5 引入了final 关键字,它通过在定义前加上final 前缀来防止子类重写方法。如果类本身被定义为final,那么它就不能被扩展。

下一步是什么?

此外,您可以回顾一下您过去完成的有关该主题的作业,并确保您能够自信地谈论它们。如果你比较新鲜,那么面试官不会期望你会回答非常复杂的问题,而是你必须使你的基本概念非常强大。

其次,如果您不能回答几个问题,这并不重要,但重要的是,无论您回答什么,您都必须充满信心地回答。所以在面试时要保持自信。我们在tutorialspoint 祝您好运,拥有一位优秀的面试官,并祝您未来一切顺利。干杯:-)