簡言之,include某文件:把某文件的代碼粘過來,如果該文件不存在,也繼續執行下面的代碼,帶_once的是看看之前引用過沒,引用過就不引用了(_once這行代碼的心里活動:“之后引用過沒有我不關心,我只看我之前引用過沒”)。
require和include的區別僅僅在報錯的處理上,require某文件時,文件不存在則報錯
include、include_once、require、require_once
include某文件:把某文件的代碼粘過來,替換掉include某文件這個語句,如果該文件不存在,也繼續執行下面的代碼
require某文件:和include不同的地方是,如果文件不存在,報錯
帶_once的是,朝前看,如果之前引入過該文件,那么就不引入了!帶_once的效率低點。
詳情如下:
---------------------------------------
include某文件,就等於把該文件中代碼粘貼過來,替換掉include這句話
這樣一來,看看多次include一個文件會是什么效果
a1.php代碼改為如下;
<?php //我是a1.php $a1++; ?>
index.php 代碼如下:
1 <?php 2 ini_set("error_reporting","E_ALL & ~E_NOTICE"); 3 header("Content-type:text/html;charset=UTF-8"); 4 $a1= 1; 5 include('a1.php'); 6 echo $a1; 7 ?>
引入一次include(上面第5行代碼),$a1變為2,修改上面的代碼,再加上兩次include,變成如下:
如果include改為include_once呢?
include_once就是看前面的代碼中(注意:不會朝后看),該文件有沒有被include過或include_once過,有,那就不引入過來了,沒有,那就引入過來。而include就是,甭管那么多,引過來!
所以,include效率高點!
1 <?php 2 ini_set("error_reporting","E_ALL & ~E_NOTICE"); 3 header("Content-type:text/html;charset=UTF-8"); 4 $a1= 1; 5 echo $a1; //1 6 include('a1.php'); //引過來所以$a1+1 7 echo $a1; //2 8 include_once('a1.php'); //發現前面執行了include a1.php這個文件,不引入了。所以$a1還是2 9 echo $a1; //2 10 include('a1.php');//繼續引過來,所以$a1+1為3 11 echo $a1;//3 12 ?>
再比如,include_once不是朝后看
1 <?php 2 ini_set("error_reporting","E_ALL & ~E_NOTICE"); 3 header("Content-type:text/html;charset=UTF-8"); 4 $a1= 1; 5 echo $a1; //1 6 include_once('a1.php'); 7 //朝前看,沒有include或include_once過a1.php,所以,引過來 $a1變為2 8 echo $a1; //2 9 include('a1.php');//繼續引過來,所以$a1+1為3 10 echo $a1;//3 11 ?>
include和require的區別