目录
Q2: 如何通过引用传递变量?" >Q2: 如何通过引用传递变量?
Q3: $GLOBAL 是什么意思?" >Q3: $GLOBAL 是什么意思?
Q4: ini_set() 有什么用处?" >Q4: ini_set() 有什么用处?
Q5: 我应该在什么时候使用 require 和 include 呢?" >Q5: 我应该在什么时候使用 require 和 include 呢?
Q6: PHP中的stdClass是什么?" >Q6: PHP中的stdClass是什么?
Q7: PHP中的 die() 和 exit() 函数有什么不同?" >Q7: PHP中的 die() 和 exit() 函数有什么不同?
Q8:它们之间的主要区别是什么" >Q8:它们之间的主要区别是什么
Q9: isset() 和 array_key_exists()之间有什么区别?" >Q9: isset() 和 array_key_exists()之间有什么区别?
Q10: var_dump() 和 print_r() 有什么不同?" >Q10: var_dump() 和 print_r() 有什么不同?
Q11: 解释不同的 PHP 错误是什么" >Q11: 解释不同的 PHP 错误是什么
Q12: 如何在 PHP 中启用错误报告?" >Q12: 如何在 PHP 中启用错误报告?
Q13: 使用默认参数声明某些函数" >Q13: 使用默认参数声明某些函数
Q14: PHP 是否支持多重继承?" >Q14: PHP 是否支持多重继承?
Q15: 在 PHP 中,对象是按值传递还是按引用传递?" >Q15: 在 PHP 中,对象是按值传递还是按引用传递?
Q16:$a != $b 和 $a !== $b ,之间有什么区别?" >Q16:$a != $b 和 $a !== $b ,之间有什么区别?
Q17: 在 PHP 中,什么是 PDO?" >Q17: 在 PHP 中,什么是 PDO?
Q18: 说明我们如何在PHP中处理异常?" >Q18: 说明我们如何在PHP中处理异常?
Q19: 区分echo和print()" >Q19: 区分echo和print()
Q20: require_once 和 require 在什么场景下使用?" >Q20: require_once 和 require 在什么场景下使用?
Q21: 判断PHP数组是否是关联数组" >Q21: 判断PHP数组是否是关联数组
Q22: 如何将变量和数据从PHP传至Javascript" >Q22: 如何将变量和数据从PHP传至Javascript
Q23: 有一个方法可以复制一个 PHP 数组至另一个数组吗?" >Q23: 有一个方法可以复制一个 PHP 数组至另一个数组吗?
首页 后端开发 php教程 20+值得了解的PHP面试题(附答案分析)

20+值得了解的PHP面试题(附答案分析)

Jun 02, 2022 am 11:15 AM
php

本篇文章给大家分享20多个PHP面试题,查漏补缺,带你巩固一波地基,看看你能答对几个?希望对大家有所帮助。

20+值得了解的PHP面试题(附答案分析)

Q1: == 和 === 之间有什么区别?

话题: PHP
困难: ⭐

  • 如果是两个不同的类型,运算符==则在两个不同的类型之间进行强制转换
  • ===操作符执行’类型安全比较

这意味着只有当两个操作数具有相同的类型和相同的值时,它才会返回TRUE。

1 === 1: true
1 == 1: true
1 === "1": false // 1 是一个整数, "1" 是一个字符串
1 == "1": true // "1" 强制转换为整数,即1
"foo" === "foo": true // 这两个操作数都是字符串,并且具有相同的值
登录后复制

? 源自: https://stackoverflow.com/questions/80646/how-do-the-php-equality-double-equals-and-identity-triple-equals-comp

话题: PHP
困难: ⭐

为了能够通过引用传递变量,我们在其前面使用&,如下所示:

$var1 = &$var2
登录后复制

? 源自: https://www.guru99.com/php-interview-questions-answers.html

话题: PHP
困难: ⭐

$GLOBALS是关联数组,包含对脚本全局范围内当前定义的所有变量的引用。

? 源自: https://www.guru99.com/php-interview-questions-answers.html

话题: PHP
困难: ⭐

PHP允许用户使用 ini_set() 修改 php.ini 中提到的一些设置。此函数需要两个字符串参数。第一个是要修改的设置的名称,第二个是要分配给它的新值。

给定的代码行将启用脚本的 display_error 设置(如果它被禁用)。

ini_set('display_errors', '1');

我们需要将上面的语句放在脚本的顶部,以便该设置一直保持启用状态,直到最后。此外,通过 ini_set() 设置的值仅适用于当前脚本。此后,PHP 将开始使用 php.ini 中的原始值。

? 源自: https://github.com/Bootsity/cracking-php-interviews-book

话题: PHP
困难: ⭐⭐

require()函数与include()函数相同,只是它处理错误的方式不同。如果出现错误,include()函数会生成警告,但脚本会继续执行。require()函数会产生致命错误,脚本会停止。

我的建议是99.9%的时间里只使用require_once

使用requireinclude代替意味着您的代码在其他地方不可重用,即您引入的脚本实际上是在执行代码,而不是提供类或某些类功能库。

? Source: https://stackoverflow.com/questions/2418473/difference-between-require-include-require-once-and-include-once

主题: PHP
难度: ⭐⭐

stdClass只是将其他类型强制转换为对象时使用的通用”空’’类。stdClass不是PHP中对象的基类。这可以很容易地证明:

class Foo{}
$foo = new Foo();
echo ($foo instanceof stdClass)?'Y':'N'; // 输出'N'
登录后复制

对于匿名对象,动态属性等很有用。

考虑StdClass的一种简单使用场景是替代关联数组。请参见下面的示例,该示例显示json_decode()如何允许获取StdClass实例或关联数组。
同样但未在本示例中显示的SoapClient::__soapCall返回一个StdClass实例。

//带有StdClass的示例
$json = '{ "foo": "bar", "number": 42 }';
$stdInstance = json_decode($json);

echo $stdInstance - > foo.PHP_EOL; //"bar"
echo $stdInstance - > number.PHP_EOL; //42

//Example with associative array
$array = json_decode($json, true);

echo $array['foo'].PHP_EOL; //"bar"
echo $array['number'].PHP_EOL; //42
登录后复制

? 源自: https://stackoverflow.com/questions/931407/what-is-stdclass-in-php

话题: PHP
困难: ⭐⭐

没有区别,它们是一样的。 选择die()而不是exit()的唯一好处可能是你节省了额外键入一个字母的时间.

? 源自: https://stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php

话题: PHP
困难: ⭐⭐

constdefine的根本区别在于,const在编译时定义常量,而define在运行时定义常量。

const FOO = 'BAR';
define('FOO', 'BAR');

// but
if (...) {
    const FOO = 'BAR';    // 无效
}
if (...) {
    define('FOO', 'BAR'); // 有效
}
登录后复制

同样在PHP 5.3之前,const命令不能在全局范围内使用。你只能在类中使用它。当你想要设置与该类相关的某种常量选项或设置时,应使用此选项。或者你可能想要创建某种枚举。一个好的const用法的例子是摆脱了魔术数字。

Define可以用于相同的目的,但只能在全局范围内使用。它应该仅用于影响整个应用程序的全局设置。

除非你需要任何类型的条件或表达式定义,否则请使用consts而不是define()——这仅仅是为了可读性!

? 源自: https://stackoverflow.com/questions/2447791/define-vs-const

话题: PHP
困难: ⭐⭐

  • array_key_exists它会告诉你数组中是否存在键,并在$a不存在时报错。
  • 如果 key或变量存在且不是nullisset才会返回true。当$a不存在时,isset不会报错。

考虑:

$a = array('key1' => 'Foo Bar', 'key2' => null);

isset($a['key1']);             // true
array_key_exists('key1', $a);  // true

isset($a['key2']);             // false
array_key_exists('key2', $a);  // true
登录后复制

? 源自: https://stackoverflow.com/questions/3210935/whats-the-difference-between-isset-and-array-key-exists

话题: PHP
困难: ⭐⭐

  • var_dump函数用于显示变量/表达式的结构化信息,包括变量类型和变量。数组递归浏览,缩进值以显示结构。它还显示哪些数组值和对象属性是引用。

  • print_r()函数以我们可读的方式显示有关变量的信息。数组值将以键和元素的格式显示。类似的符号用于对象。

考虑:

$obj = (object) array('qualitypoint', 'technologies', 'India');
登录后复制

var_dump($obj)将在屏幕的输出下方显示:

object(stdClass)#1 (3) {
 [0]=> string(12) "qualitypoint"
 [1]=> string(12) "technologies"
 [2]=> string(5) "India"
}
登录后复制

print_r($obj) 将在屏幕的输出下方显示。

stdClass Object ( 
 [0] => qualitypoint
 [1] => technologies
 [2] => India
)
登录后复制

? 源自: https://stackoverflow.com/questions/3406171/php-var-dump-vs-print-r

话题: PHP
困难: ⭐⭐

  • notice不是一个严重的错误,它说明执行过程中出现了一些错误,一些次要的错误,比如一个未定义的变量。
  • 当出现更严重的错误,如include()命令引入不存在的文件时,会给出警告warning。 这个错误和上面的错误发生,脚本都将继续。
  • fatal error致命错误将终止代码。未能满足require()将生成这种类型的错误。

? 源自: https://pangara.com/blog/php-interview-questions

话题: PHP
困难: ⭐⭐

检查 php.ini 中的“display_errors”是否等于“on”,或者在脚本中声明“ini_set('display_error',1)”。

然后,在你的代码中包含“ERROR_REPORTING(E_ALL)”,以便在脚本执行期间显示所有类型的错误消息。

? 源自: https://www.codementor.io/blog/php-interview-questions-sample-answers-du1080ext

话题: PHP
困难: ⭐⭐

思考:

function showMessage($hello = false){
  echo ($hello) ? 'hello' : 'bye';
}
登录后复制

? 源自: https://www.codementor.io/blog/php-interview-questions-sample-answers-du1080ext

话题: PHP
困难: ⭐⭐

PHP 只支持单一继承;这意味着使用关键字’extended’只能从一个类扩展一个类。

? 源自: https://www.guru99.com/php-interview-questions-answers.html

话题: PHP
困难: ⭐⭐

在 PHP 中,通过传递的对象。

? 源自: https://www.guru99.com/php-interview-questions-answers.html

话题: PHP
困难: ⭐⭐

!= 表示 不等于 (如果$a不等于$b,则为 True), !== 表示 不全等 (如果$a与$b不相同,则为 True).

? 源自: https://www.guru99.com/php-interview-questions-answers.html

话题: PHP
困难: ⭐⭐

PDO 代表 PHP 数据对象。

它是一组 PHP 扩展,提供核心 PDO 类和数据库、特定驱动程序。它提供了供应商中立、轻量级的数据访问抽象层。因此,无论我们使用哪种数据库,发出查询和获取数据的功能都是相同的。它侧重于数据访问抽象,而不是数据库抽象。

? 源自: https://github.com/Bootsity/cracking-php-interviews-book

Topic: PHP
Difficulty: ⭐⭐

当程序执行出现异常报错时,后面的代码将不会再执行,这时PHP将会尝试匹配第一个catch块进行异常的处理,如果没有捕捉到异常程序将会报致命错误并显示”Uncaught Exception”。

可以在PHP中抛出和捕获异常。

为了处理异常,代码可以被包围在”try”块中.

每个 try 必须至少有一个对应的 catch 块 。多个不同的catch块可用于捕获不同类的异常。

在catch块中也可以抛出异常(或重新抛出之前的异常)。

思考:

try {
    print "this is our try block n";
    throw new Exception();
} catch (Exception $e) {
    print "something went wrong, caught yah! n";
} finally {
    print "this part is always executed n";
}
登录后复制

? Source: https://github.com/Bootsity/cracking-php-interviews-book

Topic: PHP
Difficulty: ⭐⭐

echoprint 基本上是一样的. 他们都是用来打印输出数据的。

区别在于:

  • echo没有返回值,而print的返回值为1,因此print可以在表达式中使用。
  • echo可以接受多个参数一起输出(但是这种多个的输出方式很少见),而print一次只可以输出一个参数。
  • echo 的输出比 print 效率要高一些 .

? Source: https://github.com/Bootsity/cracking-php-interviews-book

Topic: PHP
Difficulty: ⭐⭐⭐

require_once()作用与 require() 的作用是一样的,都是引用或包含外部的一个php文件,require_once()引入文件时会检查文件是否已包含,如果已包含,不再包含(require)它。

我建议在99.9%的时候要使用 require_once

使用requireinclude 意味着您的代码不可在其他地方重用,即您要拉入的脚本实际上是在执行代码,而不是提供类或某些函数库。

? Source: https://stackoverflow.com/questions/2418473/difference-between-require-include-require-once-and-include-once

Topic: PHP
Difficulty: ⭐⭐⭐

思考:

function has_string_keys(array $array) {
  return count(array_filter(array_keys($array), 'is_string')) > 0;
}
登录后复制

如果$array至少有一个字符串类型的 key ,它将被视为关联数组。

? Source: stackoverflow.com

Topic: PHP
Difficulty: ⭐⭐⭐

这里有几种实现方法:

  • 使用 Ajax 从服务端获取你需要的数据。

思考 get-data.php:

echo json_encode(42);
登录后复制

思考 index.html:

<script>
    function reqListener () {
      console.log(this.responseText);
    }

    var oReq = new XMLHttpRequest(); // new 一个请求对象
    oReq.onload = function() {
        // 在这里你可以操作响应数据
        // 真实的数据来自 this.responseText
        alert(this.responseText); // 将提示: 42
    };
    oReq.open("get", "get-data.php", true);
    //                               ^ 不要阻塞的其余部分执行。
    //                                 不要等到请求结束再继续。
    oReq.send();
</script>
登录后复制
  • 可以在网页任何地方输出数据, 然后使用 JavaScript 从 DOM 中获取信息.
<div id="dom-target" style="display: none;">
    <?php
        $output = "42"; // 此外, 做一些操作,获得 output.
        echo htmlspecialchars($output); /* 你必须避免特殊字符,不然结果将是无效HTML。 */
    ?>
</div>
<script>
    var div = document.getElementById("dom-target");
    var myData = div.textContent;
</script>
登录后复制
  • 直接在 JavaScript 代码中 echo 数据。
<script>
    var data = <?php echo json_encode("42", JSON_HEX_TAG); ?>; // Don&#39;t forget the extra semicolon!
</script>
登录后复制

? Source: https://stackoverflow.com/questions/23740548/how-do-i-pass-variables-and-data-from-php-to-javascript

Topic: PHP
Difficulty: ⭐⭐⭐

PHP 数组通过复制进行赋值,而对象通过引用进行赋值。所有默认情况下,PHP 将复制这个数组。这里有一个 PHP 参考,一目了然:

$a = array(1,2);
$b = $a; // $b 是一个不同的数组
$c = &$a; // $c 是 $a 的引用
登录后复制

? Source: https://stackoverflow.com/questions/1532618/is-there-a-function-to-make-a-copy-of-a-php-array-to-another

英文原文地址:https://dev.to/fullstackcafe/45-important-php-interview-questions-that-may-land-you-a-job-1794

推荐学习:《PHP视频教程

以上是20+值得了解的PHP面试题(附答案分析)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

我后悔之前不知道的 7 个 PHP 函数 我后悔之前不知道的 7 个 PHP 函数 Nov 13, 2024 am 09:42 AM

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

php程序在字符串中计数元音 php程序在字符串中计数元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

您如何在PHP中解析和处理HTML/XML? 您如何在PHP中解析和处理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

解释PHP中的晚期静态绑定(静态::)。 解释PHP中的晚期静态绑定(静态::)。 Apr 03, 2025 am 12:04 AM

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? 什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。

See all articles