话不多说,直接上干货:
区别一:
1、include()遇到包含文件不存在,或是出错的时候,不停止运行,并报错。
2、require() 遇到包含文件不存在,或是出错的时候,就停止运行,并报错。
举例:
<?php
include('hello.php');
echo 'include test final!';
require('hello.php');
echo 'require test final!';
结果:
区别二:(查资料有这样的描述,但是测试未成功,故可以忽略)
1、require() 无论如何都会包含文件。
2、include() 可以有选择地包含。
测试:
<!-- B.php -->
<?php
echo "我是B";
<!-- C.php -->
<?php
echo "我是C";
<!-- A.php -->
<?php
header("content-type:text/html;charset=utf8");
if(false){
require('B.php');
}
if(false){
include('C.php');
}
?>
结果:
测试:
<?php
header("content-type:text/html;charset=utf8");
if(true){
require('B.php');
}
if(true){
include('C.php');
}
?>
结果:
区别三:
include_once() 和require_once()语句均在脚本执行期间包含并运行指定文件。此行为分别与include() require() 语句类似,
唯一区别是include_once() 和require_once()会先判断一下这个文件在之前是否已经被包含过,如已经包含,则忽略本次包含。
include_once() 和require_once() 应该用于嵌套包含的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。
注意:随着网站越来越大,可能会出现重复包含某些文件。这也许不是问题,但又是修改了所包含文件的变量后,却由于后面再次包含原来的文件而被覆盖,可能不希望出现这种情况。还可能出现另一个问题,即所包含文件中函数名的冲突。使用include_once() 和require_once()就可以解决这些问题。
区别四:
include_once(),require_once(),与include(),require()比较,效率要低一些,因为他们至少得先判断一下这个文件是否已包含。