100个常见的php面试题

2020-05-01

$ _COOKIE 是什么意思?

通过 HTTP Cookies 方式传递给当前脚本的变量的数组。

变量的作用域是什么意思?

变量的范围即它定义的上下文背景(也就是它的生效范围)。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件

在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。

'BITWISE AND' 运算符和 'LOGICAL AND' 运算符之间有什么区别?

位运算符允许对整型数中指定的位进行求值和操作

$a & $bAnd(按位与)将把 $a 和 $b 中都为 1 的位设为 1。
$a and $bAnd(逻辑与)TRUE,如果 $a 和 $b 都为 TRUE

两个主要的字符串运算符是什么?

基本的赋值运算符是"="。一开始可能会以为它是"等于",其实不是的。它实际上意味着把右边表达式的值赋给左边的运算数。

在基本赋值运算符之外,还有适合于所有二元算术,数组集合和字符串运算符的"组合运算符",这样可以在一个表达式中使用它的值并把表达式的结果赋给它。

$a = 'a';
$b = 'b';
echo $a . $b . '<br>';
$c = '';
$c .= 'c' . $a;
echo $c;

数组运算符 '===' 是什么意思?

$a === $b全等TRUE,如果 $a 等于 $b,并且它们的类型也相同。

$a != $b 和 $a !== $b 有什么区别?

$a != $b不等TRUE,如果类型转换后 $a 不等于 $b。
$a !== $b不全等TRUE,如果 $a 不等于 $b,或者它们的类型不同。

如何确定 PHP 变量是否是某个类的实例化对象?

class A
{

}

class B
{

}

$a = new A();
var_dump($a instanceof A);
var_dump($a instanceof B);

goto 语句有什么用?

goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break

goto a;
echo 'Foo';
 
a:
echo 'Bar';

输出Bar

Exception::getMessage 和 Exception:: getLine 有什么区别?

  • Exception::__construct — 异常构造函数
  • Exception::getMessage — 获取异常消息内容
  • Exception::getPrevious — 返回异常链中的前一个异常
  • Exception::getCode — 获取异常代码
  • Exception::getFile — 创建异常时的程序文件名称
  • Exception::getLine — 获取创建的异常所在文件中的行号
  • Exception::getTrace — 获取异常追踪信息
  • Exception::getTraceAsString — 获取字符串类型的异常追踪信息
  • Exception::__toString — 将异常对象转换为字符串
  • Exception::__clone — 异常克隆

如何解析配置文件?

parse_ini_file — 解析一个配置文件

parse_ini_file() 载入一个由 filename 指定的 ini 文件,并将其中的设置作为一个联合数组返回。

我们如何确定变量是否已经设置?

isset — 检测变量是否已设置并且非 NULL

函数 strstr () 和 stristr () 有什么区别?

strstr — 查找字符串的首次出现

stristr — strstr() 函数的忽略大小写版本

for 和 foreach 有什么区别?

是否可以提交带有专用按钮的表单?

可以使用 document.form.submit () 函数提交表单

ereg_replace () 和 eregi_replace () 有什么区别?

ereg_replace — 正则表达式替换

eregi_replace — 不区分大小写的正则表达式替换

$string = "This is a test";
echo str_replace(" is", " was", $string);
echo ereg_replace("( )is", "\\1was", $string);
echo ereg_replace("(( )is)", "\\2was", $string);

是否可以保护查询字符串中的特殊字符?

urlencode — 编码 URL 字符串

PHP 中可能出现的三类错误是什么?

三类基本错误类别是: 通知 (非关键错误)、警告 (严重错误) 和 致命错误 (严重错误)。

E_ERROR | E_WARNING | E_PARSE | E_NOTICE

我们如何通过页面之间的导航传递变量?

可以使用会话,cookie 或隐藏的表单字段在 PHP 页面之间传递变量。

是否可以延长 PHP 脚本的执行时间

set_time_limit — 设置脚本最大执行时间

是否可以销毁 Cookie ?

Cookie 的过期时间。这是个 Unix 时间戳,即 Unix 纪元以来(格林威治时间 1970 年 1 月 1 日 00:00:00)的秒数。也就是说,基本可以用 time() 函数的结果加上希望过期的秒数。或者也可以用 mktime()。 time()+60*60*24*30 就是设置 Cookie 30 天后过期。如果设置成零,或者忽略参数, Cookie 会在会话结束时过期(也就是关掉浏览器时)。

PHP 中的默认会话时间是什么?

Cookie 会在会话结束时过期(也就是关掉浏览器时)

是否可以在 PHP 中 使用 COM 组件?

解释是否可以在多个 PHP 项目之间共享单个 memcache 实例?

是的,可以在多个项目之间共享一个 Memcache 实例。 Memcache 是​​一个内存存储空间,您可以在一个或多个服务器上运行 memcache。您还可以将客户端配置为与特定实例集进行对话。因此,您可以在同一主机上运行两个不同的 Memcache 进程,但它们是完全独立的。除非您已经对数据进行了分区,否则有必要知道从哪个实例获取数据或将数据放入哪个实例。

解释你对 PHP 进行更改时如何更新 Memcached?

进行插入或更新时清除缓存

Memcached::deleteByKey — 从指定的服务器删除一个元素

Memcached::set — 存储一个元素