PHP 面试题



亲爱的读者,这些PHP 编程语言面试问题是专门设计用来让您熟悉在PHP 编程语言面试中可能遇到的问题类型的。根据我的经验,好的面试官在面试期间很少会计划问任何特定问题,通常问题会从该主题的一些基本概念开始,然后根据进一步的讨论以及您的回答继续进行−

PHP 是“PHP: Hypertext Preprocessor”的递归缩写。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 版本的每个脚本执行。如果您的更改没有显示,请记住停止并重新启动 httpd。如果仍然没有显示,请使用 phpinfo() 检查 php.ini 的路径。

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

空格是指您键入的通常在屏幕上不可见的字符,包括空格、制表符和回车符(换行符)。PHP 不区分空格意味着空格字符的数量几乎无关紧要。一个空格字符与多个这样的字符相同。

不,PHP 部分区分大小写。

以下是在 PHP 中关于变量最重要的信息。

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

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

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

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

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

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

  • PHP 在必要时可以很好地自动将类型从一种转换为另一种。

  • PHP 变量类似于 Perl。

PHP 总共有八种数据类型,我们用它们来构建我们的变量−

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

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

  • 布尔值−只有两个可能的值,要么为真,要么为假。

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

  • 字符串−是字符序列,例如 'PHP 支持字符串操作。'

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

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

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

变量的命名规则如下−

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

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

以下是确定任何非布尔类型值的“真值”的规则−

  • 如果值为数字,则当且仅当等于零时为假,否则为真。

  • 如果值为字符串,则当字符串为空(字符数为零)或为字符串“0”时为假,否则为真。

  • NULL 类型的值始终为假。

  • 如果值为数组,则当它不包含其他值时为假,否则为真。对于对象,包含值表示具有已赋值的成员变量。

  • 有效的资源为真(尽管某些在成功时返回资源的函数在失败时将返回 FALSE)。

  • 不要使用双精度浮点数作为布尔值。

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_ - 文件的完整路径和文件名。如果在 include 内部使用,则返回包含的文件的名称。从 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 标头将不同于我们发送 Content-Type 为 text/html\n\n 的实际标头。在这种情况下,内容类型将为 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 的内容。当我们解释 cookie 时,我们将讨论 $_COOKIE 变量。PHP $_REQUEST 变量可用于获取使用 GET 和 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 的内容。当我们解释 cookie 时,我们将讨论 $_COOKIE 变量。PHP $_REQUEST 变量可用于获取使用 GET 和 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']);
?>

可以使用 session_destroy() 函数销毁 PHP 会话。

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 服务器创建。不能保证每个 Web 服务器都会提供其中任何一个。请参阅下一节以获取所有 SERVER 变量的完整列表。

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

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

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

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

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

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

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 祝您面试顺利,并祝您未来一切顺利。干杯 :-)

广告