问: include和include_once都可以包含文件, 那么这两个函数有什么区别呢?
答: 1. 如果只是包含静态文件, 都可以包含, 而且会重复包含, 没有区别, 但是如果包含的文件中有函数就不一样了, 我们知道, 在PHP中, 函数名是不可以重名的, 那么我们看以下代码情况:
fun.php文件代码内容如下:
/** * 打印函数 */ function dump($str,$dump = false,$echo = true,$char = 'UTF-8') { @ob_start(); @header("Content-Type:text/html;charset=\"$char\""); echo '<pre><div style="text-align:left;">'; if($dump)var_dump($str);else print_r($str); echo '</div></pre>'; $out = ob_get_contents(); ob_end_clean(); if($echo) { echo $out; } else { return $out; } return NULL; }调用fun.php的文件a.php代码如下:
include("fun.php"); include("fun.php"); $citys = ["北京","上海","杭州","深圳"]; dump($citys); //报错: Fatal error: Cannot redeclare dump() //如果代码像下面这样, 重复加载fun.php文件, 那么就只会加载一次, 也就不会出错了 include_once("fun.php"); include_once("fun.php"); $citys = ["北京","上海","杭州","深圳"]; dump($citys);总的来说: 当加载同一个文件时,include不会先进行检查错误, 然后遇到同名的函数就会报错, 而include_once会进行检查, 如果已经加载了同名函数, 那么便不再加载, 同理 require与require_once也是一样的区别用法