首页 > 编程技术 > php

php include与require用法介绍

发布时间:2016-11-25 17:39

引用文件的方法有两种:require 及 include。两种方式提供不同的使用弹性。

 require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

 

include()与require()的功能也基本相同(包含),但在用法上也有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面代码中,如果变量$a为真,则将包含文件a.php:

 代码如下 复制代码

if($a){
include("a.php");
}


include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。

 

而require()则和include()不同,不管$a取何值,下面的代码将把文件a.php包含进文件里:

 代码如下 复制代码

if($a){
require("a.php");
}

在错误处理方面,使用include语句,如果发生包含错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行!但requre却会给你来个致命错误。

报错

 

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

 代码如下 复制代码

test.php
<?PHP
include  (”test999.php”);
echo  “abc”;
?>

test2.php
<?PHP
require (”test999.php”)
echo  “abc”;
?>

浏览第一个文件,因为没有找到test999.php文件,我们看到了报错信息,同时,报错信息的下边显示了abc,你看到的可能是类似下边的情况:
Warning: include(test1aaa.php) [function.include]: failed to open stream: No such file or directory in D:WebSitetest.php on line 2

Warning: include() [function.include]: Failed opening ‘test1aaa.php’ for inclusion (include_path=’.;C:php5pear’) in D:WebSitetest.php on line 2
abc

浏览第二个文件,因为没有找到test999.php文件,我们看到了报错信息,但是,报错信息的下边没有显示abc,你看到的可能是类似下边的情况:
Warning: require(test1aaa.php) [function.require]: failed to open stream: No such file or directory in D:WebSitetest.php on line 2

Fatal error: require() [function.require]: Failed opening required ‘test1aaa.php’ (include_path=’.;C:php5pear’) in D:WebSitetest.php on line 2

文章介绍了三个输出函数echo和print和print_r区别,下面我们来一下介绍一下用法速度问题。

1.echo和print的区别

PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。

$r = print "Hello World";

这意味着print可用在一些复杂的表达式中,而echo则不行。但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print语句。


echo 没有返回值;print 有返回值,print 的返回值总是1。

表达式
print 可以用于复杂的表达式,而 echo 不可以。比如 print 可以用于如下示例:

 代码如下 复制代码
<html><body><?php$a=true;$a ? print "true":print "false";?></body></html>

参数
echo 可以有多个参数,而 print 只能有一个参数。

echo 如果有多个参数,应用逗号分隔,每个参数没有必要加小括号,正确写法如下:

 代码如下 复制代码
echo "good ","for ","you";

注意,如果 echo 有多个参数,只用一个小括号将所有参数围起来,是错误的写法。下面的写法是错误的:

 代码如下 复制代码
echo ("good ","for ","you");

print 只能有一个参数,比如:

 代码如下 复制代码

print ("good for you");
print "good for you";

echo 和 print 的作用都是输出字符串。echo 和 print 之间主要的区别在于,echo 的速度比 print 快,因为 echo 没有返回值。


print_r()函数 ,只用于输出数组。

php 中 print_r 函数输出的数组内容不排列。为了让它输出的好看些。如,数组有多层。分段列出,我们可以这样写:

Example #1 print_r() example

 代码如下 复制代码

<pre>
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
print_r ($a);
?>
</pre>
The above example will output:

<pre>
Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)
</pre>

今天在用一个php产品时出现了Allowed memory size of 8388608 bytes exhausted (tried to allocate 46080 bytes) in....提示信息,经过查核是因为此产品未考虑到用户内存引起的,下面我们来看看如何解决此方法

php.ini这个参数memory_limit引起的,因为对它的设置不够在所以引起了上在的问题,下面我们来看看几种解决方法


方法一,用程序来实现

  在你的php代码中增加以下命令行即可 

 代码如下 复制代码
ini_set('memory_limit','128M');

这种需要你的服务器未禁止修改,一般的虚拟空间是不可以操作的。

方法二,利用.htaccess 来做,这种可行性超高。

  在你的.htaccess里加入

 代码如下 复制代码
php_value memory_limit 128M ;

可以将128M改为任何你想设置的值 就可以了。

方法三,这要针对有服务器管理权限的朋友了,直接修改php.ini文件了。

   找到“memory_limit”这一项,如果没有,你可以在文件的尾部自己增加这个参数。以下是一些设置范例

 代码如下 复制代码
memory_limit = 128M ;

可以将128M改为任何你想设置的值
   重启apache就可以了。

这样我再运行那产品不没会出现前面讲到的Allowed memory size of 8388608 bytes exhausted (tried to allocate 46080 bytes) in....了,。

我们介绍关于php中数组的操作,删除数组中指定值或判断数组中是否有值或清除空值操作,有需要的同学可以参考一下。

首先我们来看看关于php如何操作数组中的空值的多种方法

implode(); 此函数可参考http://www.111cn.net/phper/29/2dc95be9381b4bb1753083c09fda1a36.htm
用implode()将数组输出为字符串,判断输出的字串是否为空。初看上去似乎是个不错的方法,可惜跟上一点一样,对于二维以上数组就不行了。举个例子:

 代码如下 复制代码

$arr= array(array(),array(),array());
$str = implode(',',$arr);

if(empty($str)) echo "空";
else echo "非空";

很明显$arr是个含有三个空数组的二维数组,应该也算是空的,可是输出的确是非空。判断失败。
三、count(); 可参考http://www.111cn.net/w3school/php/func_array_count.htm

 代码如下 复制代码

$arr= array("","","");
echo count($arr);

四、in_array('', $arr)); 函数用法可参考http://www.111cn.net/phper/24/c5b81a8af14b1c0928eea343f59b454a.htm

 代码如下 复制代码
$arr= array("d","s","");
echo in_array('', $arr);

这个只能说明数组中有空的元素,不能证明数组是空的。很明显也不行。
五、empty(); 函数用法可参考http://www.111cn.net/so/php+empty()
这个cpyeh觉得跟前面几种方法差不多

 代码如下 复制代码

$arr= array("","","");
if(empty($arr)) echo "空";
else echo "非空";

结果还是非空
六、用strlen(),没内容的话好象长度都为1

结合上面实例我们写一个完整的删除数组空值的元素

 代码如下 复制代码

function array_remove_key($array, $keys)
{
$num = count($keys);
$num_last = $num - 1;
$this_array_0 = &$array;
$last_key = $keys[$num_last];
for ($i = 0; $i < $num_last; $i++)
{
$this_key = $keys[$i];
$this_var_name = 'this_array_' . $i;
$next_var_name = 'this_array_' . ($i + 1);
if (!array_key_exists($this_key, $$this_var_name)) {
break;
}
$$next_var_name = &${$this_var_name}[$this_key];
}
unset(${$next_var_name}[$last_key]);
return $array;
}

今天一个客户要批量生成400电话,起始位置是10000号,开始我直接生成就出现了如10004的号码但是商人都不喜欢这个数字,所在说过滤尾数是4的数字,我想一下利用substr($str,-1)==4就可以实现了,下面看代码。
 代码如下 复制代码
include("cn.php"); //数据库连接类,这里不说了自己去找找吧。
$Db = new Db();
$sql ="select * from 表名 where isnew=1";
$query = $Db->query( $sql );
$rs = $Db->fetch( $query ,0);
$i=10000;
foreach( $rs as $v => $vv )
{
 if( substr($i,-1)==4 )
 {
  $i++;
 }
 $sql ="update 表名 set txtiphone= '$i' where id=".$vv['id'];
 if( $Db->query( $sql ) )
 {
  $i++;
 }
}
echo '批量更新完成';

关于substr()函数

语法

substr(string,start,length)

参数 描述
string 必需。规定要返回其中一部分的字符串。
start

必需。规定在字符串的何处开始。

  • 正数 - 在字符串的指定位置开始
  • 负数 - 在从字符串结尾的指定位置开始
  • 0 - 在字符串中的第一个字符处开始
length

可选。规定要返回的字符串长度。默认是直到字符串的结尾。

  • 正数 - 从 start 参数所在的位置返回
  • 负数 - 从字符串末端返回

 

本站原创教程转载注明来源: http://www.111cn.net/phper/php.html   

标签:[!--infotagslink--]

您可能感兴趣的文章: