部分面试题整理(一)

isset()和empty()的区别

1、isset()是检测一个变量是否设置并且非空

当一个变量未设置时,如:

结果为no

或者为空时

 

 结果也是no

2、empty则是检测一个变量是否为空

empty() 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。

以下变量会被默认为空:

  • "" (空字符串)
  • 0 (作为整数的0)
  • 0.0 (作为浮点数的0)
  • "0" (作为字符串的0)
  • NULL
  • FALSE
  • array() (一个空数组)
  • $var; (一个声明了,但是没有值的变量)

在PHP中error_reporting这个函数有什么作用?

error_reporting()这个函数主要是设置php的报错级别

该函数能够在运行时设置 error_reporting 指令。 PHP 有诸多错误级别,使用该函数可以设置在脚本运行时的级别

如果没有设置可选参数 level, error_reporting() 仅会返回当前的错误报告级别

参数level的可选值为
E_ERROR、E_WARNING 、E_PARSE 、E_NOTICE 、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING、E_USER_ERROR、E_USER_WARNING、E_USER_NOTICE、E_STRICT 、E_RECOVERABLE_ERROR、E_DEPRECATED、E_USER_DEPRECATED、E_ALL
下面是一些示例:
//禁用错误报告,也就是不显示错误
error_reporting(0);
//报告运行时错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//报告所有错误
error_reporting(E_ALL);

现在编程中经常采取MVC三层结构,请问MVC分别指哪三层,有什么优点?

MVC三层:

M层代表着模型层,主要用户对表数据的处理,由Model类来完成

C层则是代表着控制器层,应用控制器(核心控制器App类)和Action控制器都承担了控制器的角色,Action控制器完成业务过程控制,而应用控制器负责调度控制

V层为视图层,由View类和模板文件组成,模板做到了100%分离,可以独立预览和制作。

优点是:可以实现代码的重用性,避免产生代码冗余;M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。

AJAX的优势有哪些?

1、提高了性能和速度
减少客户端和服务器之间的流量传输,同时减少了双方响应的时间,响应更快,因此提高了性能和速度。
2、交互性能好
使用ajax,可以开发更快,更具交互性的Web应用程序。
3、异步调用
AJAX对Web服务器进行异步调用。这意味着客户端浏览器在开始渲染之前避免等待所有数据到达。
4、节省带宽
基于Ajax的应用程序使用较少的服务器带宽,因为无需重新加载完整的页面。
5、使用XMLHttpRequest在Ajax Web开发技术中起着重要作用。XMLHttpRequest是由Microsoft设计的特殊JavaScript对象。XMLHttpRequest对象调用作为异步HTTP请求到服务器以传输数据。它用于向非Ajax页面发出请求。
6、拥有开源JavaScript库 : JQuery,Prototype,Scriptaculous等。AJAX通过HTTP协议进行通信。

7、实现页面局部刷新,增强用户体验效果

语句include和require的区别是什么?为避免多次包含同一文件,可用什么语句代替它们?

include和require的区别

1、加载失败的处理方式不同

        include与require除了在处理引入文件的方式不同外,最大的区别就是:

        include在引入不存文件时产生一个警告且脚本还会继续执行,

        require则会导致一个致命性错误且脚本停止执行。

2、include()是有条件包含函数,而 require()则是无条件包含函数(有条件是指在判断条件时,若成立,include()引入的文件就会引入,否则不会。而无条件则是不会受条件的影响,都会引入成功)

3、文件引用方式

        include有返回值(为boolean值),而require没有

为避免多次包含同一文件,可用什么语句代替它们

include()  可以使用include_once()代替

require()   可以使用require_once()代替

_once 后缀表示已加载的不加载

include_once() 和 require_once() 语句也是在脚本执行期间包括运行指定文件。此行为和 include() 语句及 require() 类似,使用方法也一样。唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。这两个语句应该用于在脚本执行期间,同一个文件有可能被包括超过一次的情况下,确保它只被包括一次,以避免函数重定义以及变量重新赋值等问题。

foo()和@foo()之间有什么区别?

@为错误控制运算符   当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

前面加@foo()代表代码运行时会将foo()里的错误忽略,不给出提示

echo、print_r、print、var_dump区别

echo()
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。

print()
函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。

print_r()
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。

var_dump()
判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

写出smarty模板的特点

Smarty的特点是将模板编译成PHP脚本,然后执行这些脚本。很快,非常灵活。

是一个模板类,一般也简称为模板。Smarty里面有专门的模板引擎。模板的主要功能就是逻辑与显示的分离,也就是PHP和HTML的分离。

1.速度:相对于其他模板而言,采用Smarty模板编写的程序可以获得最快的速度;
2.编译性调用:采用Smarty模板编写的程序在运行时会生成一个PHP和HTML混编的文件,在下一次访问模板时会直接访问这个混编的文件,而不必重新编译,所以可以提高访问速度.
3.缓存技术:Smarty提供一种可选择的缓存技术,可以将客户端的HTML文件缓存成一个静态页,当用户开启缓存后,在指定的时间内,WEB请求会直接调用这个缓存文件,即直接调用静态的HTML文件.
4.插件技术:因为Smarty模板引擎是通过PHP面向对象技术实现的,所以不仅可以修改Smarty模板的源文件,而且可以通过自定义函数向Smarty中添加功能.
5.模板中可以使用if/elseif/else/endif语句

PHP如何实现页面跳转(拥有三种方法)

一、使用header()函数进行跳转

header()

普通跳转

header('location:http://www.baidu.com');

定时跳转

header('Refresh:3,Url=http://www.php.cn/')    表示3秒后跳转

二、使用javascript代码进行跳转

例:

$url  = "http://www.baidu.com" ;  

echo "<script> window.location.href ='$url'</script>"; 

三、使用meta标签进行跳转

Meta标签是HTML中负责提供文档元信息的标签,在PHP程序中使用该标签,也可以实现页面跳转。若定义http-equiv为refresh,则打开该页面时将根据content规定的值在一定时间内跳转到相应页面。

若设置content="秒数;url=网址",则定义了经过多长时间后页面跳转到指定的网址。例如,使用meta标签实现疫苗后页面自动跳转到冰之爱。

例:

<?php 
$url=http://www.baidu.com";
?>  
<html>    
<head>    
<meta  http-equiv = "refresh"   content ="3; url=<?php echo $url;  ?>">    
</head>    
<body>    
页面只停留三秒……   
</body>  
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值