PHP中include和require的区别详解

作者&投稿:华翔 (若有异议请与网页底部的电邮联系)
PHP中include和require的区别详解~

1、概要

   require()语句的性能与include()相类似,都是包括并运行指定文件。不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换require()语句)。这就意味着如果可能执行多次的代码,则使用require()效率比较高。另外一方面,如果每次执行代码时是读取不同的文件,或者有通过一组文件迭代的循环,就使用include()语句。

  require的使用方法如:require("myfile.php"),这个语句通常放在PHP脚本程序的最前面。PHP程序在执行前,就会先读入require()语句所引入的文件,使它变成PHP脚本文件的一部分。include使用方法和require一样如:include("myfile.php"),而这个语句一般是放在流程控制的处理区段中。PHP脚本文件在读到include()语句时,才将它包含的文件读取进来。这种方式,可以把程式执行时的流程简单化。


incluce在用到时加载


require在一开始就加载


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


  PHP系统在加载PHP程序时有一个伪编译过程,可使程序运行速度加快。但incluce的文档仍为解释执行。include的文件中出错了,主程序继续往下执行,require的文件出错了,主程序也停了,所以包含的文件出错对系统影响不大的话(如界面文件)就用include,否则用require。

  require()和include()语句是语言结构,不是真正的函数,可以像php中其他的语言结构一样,例如echo()可以使用
echo("ab")形式,也可以使用echo
"abc"形式输出字符串abc。require()和include()语句也可以不加圆括号而直接加参数。

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

2、详情

2.1 报错

  include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。

  require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。

  用例子来说话,写两个php文件,名字为test-include.php和test-require.php,注意相同的目录中,不要存在一个名字是test-nothing.php的文件。


test-include.php

<?php

include 'test-nothing.php';

echo 'abc';

?>





test-require.php

<?php

require 'test-nothing.php';

echo 'abc';

?>


  浏览http://localhost/test-include.php,因为没有找到test-nothing.php文件,我们看到了报错信息,同时,报错信息的下边显示了abc,你看到的可能是类似下边的情况:


Warning: include(test-nothing.php) [function.include]: failed to open
stream: No such file or directory in D:\wwwest-include.php on line 2

Warning: include()
[function.include]: Failed opening 'test-nothing.php' for inclusion
(include_path='.;C:\php5\pear') in D:\wwwest-include.php on line 2

abc


浏览http://localhost/test-require.php,因为没有找到test-nothing.php文件,我们看到了报错信息,但是,报错信息的下边没有显示abc,你看到的可能是类似下边的情况:


Warning: require(test-nothing.php) [function.require]: failed to open
stream: No such file or directory in D:\wwwest-require.php on line 2

Fatal error: require()
[function.require]: Failed opening required 'test-nothing'
(include_path='.;C:\php5\pear') in D:\wwwest-require.php on line 2


2.2 条件引用

  include()与require()的功能相同,用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。

  例如下面例子,如果变量$somg为真,则将包含文件somefile.php:


if($some){

  include 'somefile.php';

}


  但无论$some取何值,下面的代码将把文件somefile.php包含进文件里:


if($something){

  require 'somefile.php';

}


  下面的例子充分说明了这两个函数之间的不同:


$i = 1;

while ($i < 3) {

  require "somefile.$i.php";

  $i++;

}


  可以从以上这段代码中看出,每一次循环的时候,程序都将把同一个文件包含进去,很显然这不是我们想要的,可以看出这段代码希望在每次循环时,将不同的文件包含进来,如果要完成这个功能,只能使用函数include():


$i = 1;

while ($i < 3) {

  include "somefile.$i.php";

  $i++;

}


2.3 文件引用方式

  include()执行时需要引用的文件每次都要进行读取和评估,require()执行时需要引用的文件只处理一次(实际上执行时需要引用的
文件内容替换了require()语句)可以看出若有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高,若每次执行代码
时相读取不同的文件或者有通过一组文件叠代的循环,就使用include(),可以给想要包括的文件名设置变量,当参数为
include()时使用这个变量。

include 可放php代码中;
require放php代码前;
主要区别在于报错的问题上:
如果require引用php文件,报错是致命的,且代码不在往下执行,而include引用文件,报错后给予提示,且下面的代码继续执行
希望对你有帮助

1、概要

   require()语句的性能与include()相类似,都是包括并运行指定文件。不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换require()语句)。这就意味着如果可能执行多次的代码,则使用require()效率比较高。另外一方面,如果每次执行代码时是读取不同的文件,或者有通过一组文件迭代的循环,就使用include()语句。

  require的使用方法如:require("myfile.php"),这个语句通常放在PHP脚本程序的最前面。PHP程序在执行前,就会先读入require()语句所引入的文件,使它变成PHP脚本文件的一部分。include使用方法和require一样如:include("myfile.php"),而这个语句一般是放在流程控制的处理区段中。PHP脚本文件在读到include()语句时,才将它包含的文件读取进来。这种方式,可以把程式执行时的流程简单化。

incluce在用到时加载

require在一开始就加载

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

  PHP系统在加载PHP程序时有一个伪编译过程,可使程序运行速度加快。但incluce的文档仍为解释执行。include的文件中出错了,主程序继续往下执行,require的文件出错了,主程序也停了,所以包含的文件出错对系统影响不大的话(如界面文件)就用include,否则用require。

  require()和include()语句是语言结构,不是真正的函数,可以像php中其他的语言结构一样,例如echo()可以使用
echo("ab")形式,也可以使用echo
"abc"形式输出字符串abc。require()和include()语句也可以不加圆括号而直接加参数。

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

2、详情

2.1 报错

  include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。

  require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。

  用例子来说话,写两个php文件,名字为test-include.php和test-require.php,注意相同的目录中,不要存在一个名字是test-nothing.php的文件。

test-include.php

<?php

include 'test-nothing.php';

echo 'abc';

?>

test-require.php

<?php

require 'test-nothing.php';

echo 'abc';

?>

  浏览,因为没有找到test-nothing.php文件,我们看到了报错信息,同时,报错信息的下边显示了abc,你看到的可能是类似下边的情况:

Warning: include(test-nothing.php) [function.include]: failed to open
stream: No such file or directory in D:\www\test-include.php on line 2

Warning: include()
[function.include]: Failed opening 'test-nothing.php' for inclusion
(include_path='.;C:\php5\pear') in D:\www\test-include.php on line 2

abc

浏览,因为没有找到test-nothing.php文件,我们看到了报错信息,但是,报错信息的下边没有显示abc,你看到的可能是类似下边的情况:

Warning: require(test-nothing.php) [function.require]: failed to open
stream: No such file or directory in D:\www\test-require.php on line 2

Fatal error: require()
[function.require]: Failed opening required 'test-nothing'
(include_path='.;C:\php5\pear') in D:\www\test-require.php on line 2

2.2 条件引用

  include()与require()的功能相同,用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。

  例如下面例子,如果变量$somg为真,则将包含文件somefile.php:

if($some){

  include 'somefile.php';

}

  但无论$some取何值,下面的代码将把文件somefile.php包含进文件里:

if($something){

  require 'somefile.php';

}

  下面的例子充分说明了这两个函数之间的不同:

$i = 1;

while ($i < 3) {

  require "somefile.$i.php";

  $i++;

}

  可以从以上这段代码中看出,每一次循环的时候,程序都将把同一个文件包含进去,很显然这不是我们想要的,可以看出这段代码希望在每次循环时,将不同的文件包含进来,如果要完成这个功能,只能使用函数include():

$i = 1;

while ($i < 3) {

  include "somefile.$i.php";

  $i++;

}

2.3 文件引用方式

  include()执行时需要引用的文件每次都要进行读取和评估,require()执行时需要引用的文件只处理一次(实际上执行时需要引用的
文件内容替换了require()语句)可以看出若有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高,若每次执行代码
时相读取不同的文件或者有通过一组文件叠代的循环,就使用include(),可以给想要包括的文件名设置变量,当参数为
include()时使用这个变量。


...msg="1234567890"; msg[5]='A' Linux运行不对,HP,Solaris运行对。_百...
msg="1234567890";这样定义就相当于msg指针指向的是一个const变量,也就是说msg = “1234567890”所在的内存区域是不可写的。所以msg[5] = 'A'没有写内存的权限,所以就会报错。char *msg = "1234567890"这样定义编译器编译的时候就会把msg当做是const变量放在不可写的内存区域。include <stdlib.h>...

c语言求解答
第一个答案:include<stdio.h>void delchar(char * str, char c){ int i = 0; if(str[0] =='\\0') return ; if(str[0] == c) { for(i=0;str[i] !='\\0';i++) { str[i] = str[i+1]; } } delchar(str+1,c);}int main(){ ...

c++中window api小程序
include<windows.h> include<math.h> define NUM 10000 define Pi 3.1415926 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInatance,PSTR szCmdLine,int iCmdShow){ static TCHAR szAppName[]=TEXT("正弦曲线");HWND hwnd;MSG msg;WND...

一道C语言编程题
include<stdio.h>#include<stdlib.h>#include<memory.h>int s1[9][9],a,b,w,h,x,y,n;void gc(int a,int b,int hp,int m){ if(hp!=0) { if(s1[a][b]==3) {if((m<n)||(n==0)) n=m;}else { if(s1[a][b]==4) hp=6; if(s1[a-1][b]!=0) ...

1.设单片机主频6MHZ 定时器T1用作波特率发生器 波特率为2400b\/S串...
include<reg51.h> unsigned char UART_RX; \/\/定义串口接收数据变量 unsigned char RX_flag;\/\/定义穿行接收标记 函数名:UART串口初始化函数 调 用:UART_init();参 数:无 返回值:无 结 果:启动UART串口接收中断,允许串口接收,启动T\/C1产生波特率(占用)备 注:振荡晶体为6MHz,PC...

5. 执行以下程序后,输出'#'号的个数是 。 #include <stdio.h> main...
i=1时.j=2,j>i,不输出 i=2时,j=2,满足,输出一个 i=3时,j=2,3满足条件,输出2个 i=4时,j=2,3,4满足条件,输出3个 所以一共输出6个

删除字符串中的字符。输入一个字符串s,再输入一个字符c,将字符串s...
include <stdio.h> int main () {int i,n=0;char ch,c[100];printf("Input a string: ");while ((ch=getchar()) != '\\n'){c[n++]=ch;}printf("Input a char: ");scanf("%c",&ch); printf("After deleted,the string is: ");for(i=0;i<n;i++)if (c[i]!=ch)...

3. 用任意一种编程语言(C\/C++\/Java\/C#\/VB.NET)写出任意一种你所知的...
include<stdio.h> include<stdlib.h> void BubbleSort(int a[], const int first, const int last);\/\/冒泡排序 void InsertSort(int a[], const int first, const int last);\/\/插入排序 void SelectSort(int a[], const int first, const int last);\/\/选择排序 void MergeSort(int a[]...

计算机专业的单词
一、《计算机专业英语》1. file n. 文件;v. 保存文件 2. command n. 命令,指令 3. use v. 使用,用途 4. program n. 程序 5. line n. (数据,程序)行,线路 6. if conj. 如果 7. display vt. 显示,显示器 8. set v. 设置,n. 集合 9. key n. 键,关键字,关键码 10. ...

[gcc &c语言] 随机生成8位的数字字母组合
程序有一个参数,表示生成的密码的长度 运行的时候要加上,比如.\/password 8 我写的很简单,参数没做检查,你应该自己去完善一下。include <stdlib.h> include <string.h> include <stdio.h> void generate(int len,char* buffer){ \/*产生密码用的字符串*\/ static const char string[]= "...

故城县18568915477: PHP中include和require的区别详解 -
项丽罗可: 1.include与require的区别 require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份.常用的函数,亦可以这个...

故城县18568915477: PHP中include和required区别是什么? -
项丽罗可:require()语句的功能与include()相类似,都是包括并运行指定文件.不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换require()...

故城县18568915477: php中require和include的区别 -
项丽罗可: HP的include()和require()是两种包含外部文件的方法,二者的区别如下:1:加载失败的处理方式不同:include()会产生一个警告,而require()则导致一个致命的错误(出现错误,脚本停止执行)require() :如果文件不存在,会报...

故城县18568915477: php中include和require有什么区别 -
项丽罗可: 平常是没区别的.当要加载的文件不存在时候, include会给一个warning警告, 然后继续运行. 而require则会给一个fatal error, 直接结束脚本

故城县18568915477: [php]require 和include -
项丽罗可: 简单说一下 require和include,前者当包含的文件不存在时,程序停止执行,后者当包含的文件不存在时只是报一个警告,程序继续执行.require和require_once,这两个区别为,前者遇到即包含文件,后者会判断是否已经包含过了,如果包含...

故城县18568915477: php中include和require有什么区别?
项丽罗可:天南给你解说下:@在PHP中是抑制符,用来抑制错误信息输出; include 或 include_once 包含文件,如果文件包含失败,则向页面输出错误信息,然后继续执行后续代码; 而require 或 require_once 包含文件,当文件包含失败时,向页面输出错误信息,并停止当前页面的解析; 所以严格意义上讲,当我们要包含文件时,请使用 require 或 require_once

故城县18568915477: php 中 include 和 require 的区别? -
项丽罗可: 这两种结构除了在如何处理失败之外完全一样.include() 产生一个警告而 require() 则导致一个致命错误.换句话说,如果你想在遇到丢失文件时停止处理页面就用 require().include() 就不是这样,脚本会继续运行.我记得我在黑马程序员社区刷面试题的时候刷到过这个题.如果有类似的问题,基本上都可以到社区找到答案,板块很清晰,上面也会有同道中人大家一起讨论.气氛很好

故城县18568915477: php使用include和require的却别? -
项丽罗可: inlcude包含文件时有条件的,require无条件,如果文件不存在,或者出错,include只是warning一个警告,而require是致命的错误.

故城县18568915477: php使用include 和require引入文件的区别 -
项丽罗可: require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误 include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误. 以下为补充:1. include有返回值,而require没有.2. include()包括并运行...

故城县18568915477: php 中include()与require()的对比~呢? -
项丽罗可: include遇到错误和文件不存在,不会报错,程序可以继续执行.require遇到文件不存在,会报错找不到文件,程序终止.

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网