php中的类、对象学习笔记

 更新时间:2016年11月25日 15:00  点击:1271
本文章来给大家介绍在php面向对象的一些用法详细,这里主要是讲到php中的类、对象学习笔记,希望对各位同学会有所帮助。

面向对象思想

面向对象程序设计(Object-Oriented Programming,OOP)是一种程序设计范型,同事也是一种程序开发方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和可扩展性。

面向过程、面向对象以及函数式编程被人们称为编程语言中的三大范式(实际上,面向过程与面向对象都同属于命令式编程),是三种不同编码和设计风格。其中面向对象的核心思想是对象、封装、可重用性和可扩展性。

面向对象是一种更高级、更抽象的思维方式,面向过程虽然也是一种抽象,但面向过程是一种基础的抽象,面向对象又是建立在面向过程以上的更高层次的抽象,因此面向对象的理解也就不是那么容易了。

类是我们队一组对象的描述

在php里,每个类的定义都以关键字class开头,后面跟着类名,紧接着一对花括号,里面包含有类成员和方法的定义。如下代码所示

 代码如下 复制代码

class person{
    public $name;
    public $gender;
    public function say(){
        echo $this->name."is ".$this->gender;
    }
}

接下来就可以产生这个类的实例:

 代码如下 复制代码

$student = new person();
$student->name="Tome";
$student->gender= "male";
$student->say();
$teacher= new person();
$teacher->name="kati";
$teacher->gender= "female";
$teacher->say();

这段代码则实例化了person类,产生了一个student对象和teacher对象的实例。实际上也就是从抽象到具体的过程。

对类和对象的一些理解:

类定义了一系列的属性和方法,并提供了实际的操作细节,这些方法可以用来对属性进行加工。
对象含有类属性的具体值,这就是类的实例化。正是由于属性的不同,才能区分不同的对象。在上面例子里,由于student和teacher的性别和姓名不一样,才得以区分开二人。
类与对象的关系类似一种服务于被服务、加工与被加工的关系,具体而言,就如同原材料与流水线的关系。只需要在对象上调用类中所存在的方法,就可以对类的属性进行加工,并且展现其功能。
打印student对象

 代码如下 复制代码

print_r((array)$student);
var_dump($student);

序列化对象

 代码如下 复制代码

$str = serialize($student);
echo $str;
file_put_contents('store.txt',$str);

输出结果:

0:6:"person":2:{s:4:"name";s:3:"Tom";s:6:"gender";s:4:"mail";}

反序列化对象

 代码如下 复制代码

$str = file_get_contents('store.txt');
$student = unserialize($str);
$student->say();

魔术方法是在php5中以__开头的,它们有着魔术般的功能,可以给我开发带来很多好处,下面我来给大家介绍魔术方法一些用法与在php中有那些魔术方法吧。

魔术方法是以两个下划线"__"开头、具有特殊作用的一些方法,可以看做php的"语法糖"。

语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更"甜蜜"的语法。语法糖往往给程序员提供了更实用的编程方式或者一些技巧的用法,有益于更好的编码风格,是代码更易读。不过其并没有给语言添加什么新东西。php里的引用、SPL等都属于语法糖。

 代码如下 复制代码

$tom = new family($student,'peking');
$tom = people->say();

上面family类中的construct方法就是一个标准魔术方法。这个魔术方法又称构造方法。有构造方法就有对应的西沟方法,即destruct方法,西沟方法会在某个对象的所有引用都被删除,或者当对象被显式销毁时执行。这两个方法是常见也是最游泳的魔术方法。

1、__get、__set

  这两个方法是为在类和他们的父类中没有声明的属性而设计的。

  ◆__get( $property ) 当调用一个未定义的属性时,此方法会被触发,传递的参数是被访问的属性名。

  ◆__set( $property, $value ) 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值。

  这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性)。

  2、__isset、__unset

  ◆__isset( $property ) 当在一个未定义的属性上调用isset()函数时调用此方法。

  ◆__unset( $property ) 当在一个未定义的属性上调用unset()函数时调用此方法。

  与__get方法和__set方法相同,这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性)。

  3、__call

  __call( $method, $arg_array ) 当调用一个未定义的方法是调用此方法。

  这里的未定义的方法包括没有权限访问的方法;如果方法不存在就去父类中找这个方法,如果父类中也不存在就去调用本类的__call()方​法,如果本类中不存在__call()方法就去找父类中的__call()方法。

  4、__autoload

  __autoload 函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。

  如果要定义一个全局的自动加载类,则必须用spl_autoload_register()方法将处理类注册到PHP标准库:

 

 代码如下 复制代码

<?php
class Loader  
 {         
    static function autoload_class($class_name)        {         
    //寻找正确的$class_name类,并引入,没有则抛出异常         
     }        
 }     
/**
*  设置对象的自动载入       
*  spl_autoload_register — Register given function as __autoload() implementation      
*/  
spl_autoload_register(array(‘Loader’, ‘autoload_class’));  
 $a = new Test();//Test没用require就实例化,实现自动加载,很多框架就用这种方法自动加载类

注意: 在 __autoload 函数中抛出的异常不能被 catch 语句块捕获并导致致命错误,所以应该在函数本身做捕获。

  5、__construct、__destruct

  ◆__construct 构造方法,当一个对象创建时调用此方法,相对于PHP4使用此方法的好处是:可以使构造方法有一个独一无二的名称,无论它所在的类的名称是什么.这样你在改变类的名称时,就不需要改变构造方法的名称。

  ◆__destruct 析构方法,PHP将在对象被销毁前(即从内存中清除前)调用这个方法。默认情况下,PHP仅仅释放对象属性所占用的内存并销毁对象相关的资源,析构函数允 许你在使用一个对象之后执行任意代码来清除内存。当PHP决定你的脚本不再与对象相关时,析构函数将被调用。

  在一个函数的命名空间内,这会发生在函数return的时候。对于全局变量,这发生于脚本结束的时候。如果你想明确地销毁一个对象,你可以给指向该对象的变量分配任何其它值.通常将变量赋值勤为NULL或者调用unset。

  6、__clone

  PHP 5中的对象赋值是使用的引用赋值,如果想复制一个对象则需要使用clone方法,在调用此方法是对象会自动调用__clone魔术方法,如果在对象复制需要执行某些初始化操作,可以在__clone方法实现。

  7、__toString

  __toString方法在将一个对象转化成字符串时自动调用,比如使用echo打印对象时。

  如果类没有实现此方法,则无法通过echo打印对象,否则会显示:Catchable fatal error: Object of class test could not be converted to string in,此方法必须返回一个字符串。

  在PHP 5.2.0之前,__toString方法只有结合使用echo() 或 print()时 才能生效。PHP 5.2.0之后,则可以在任何字符串环境生效(例如通过printf(),使用%s修饰符),但 不能用于非字符串环境(如使用%d修饰符)。从PHP 5.2.0,如果将一个未定义__toString方法的对象 转换为字符串,会报出一个E_RECOVERABLE_ERROR错误。

  8、__sleep、__wakeup

  ◆__sleep 串行化的时候用

  ◆__wakeup 反串行化的时候调用

  serialize() 检查类中是否有魔术名称__sleep 的函数。如果这样,该函数将在任何序列化之前运行。它可以清除对象并应该返回一个包含有该对象中应被序列化的所有变量名的数组。

  使用__sleep 的目的是关闭对象可能具有的任何数据库连接,提交等待中的数据或进行类似的清除任务。此外,如果有非常大的对象而并不需要完全储存下来时此函数也很有用。

  相反地,unserialize() 检查具有魔术名称 __wakeup 的函数的存在。如果存在,此函数可以重建对象可能具有的任何资源。使用 __wakeup 的目的是重建在序列化中可能丢失的任何数据库连接以及处理其它重新初始化的任务。

  9、__set_state

  当调用var_export()时,这个静态 方法会被调用(自PHP 5.1.0起有效)。

  本方法的唯一参数是一个数组,其中包含按array(’property’ => value, …)格式排列的类属性。

  10、__invoke(PHP 5.3.0以上版本有效)

  当尝试以调用函数的方式调用一个对象时,__invoke 方法会被自动调用。

  11、__callStatic(PHP 5.3.0以上版本有效)

  它的工作方式类似于__call() 魔术方法,__callStatic() 是为了处理静态方法调用。

  PHP 确实加强了对 __callStatic() 方法的定义;它必须是公共的,并且必须被声明为静态的。同样,__call() 魔术方法必须被定义为公共的,所有其他魔术方法都必须如此

本文章来给各位同学介绍一下利用php用strtotime或mktime指定日期数据(本周,上周,本月,上月,本季度)实例,希望对各位同学会有所帮助呀。

strtotime定义和用法

strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。

语法

strtotime(time,now)参数 描述
time 规定要解析的时间字符串。
now 用来计算返回值的时间戳。如果省略该参数,则使用当前时间。 

 代码如下 复制代码

echo date("Y-m-d",strtotime("now")), "<br />";
echo date("Y-m-d",strtotime("-1 week Monday")), "<br />"; //离现在最近的周一
echo date("Y-m-d",strtotime("-1 week Sunday")), "<br />"; //离现在最近的周末
echo date("Y-m-d",strtotime("+0 week Monday")), "<br />"; //将要到来的周一
echo date("Y-m-d",strtotime("+0 week Sunday")), "<br />"; //将要到来的周末
echo date("n");// 第几个月
echo date("w");//本周周几
echo date("t");// 本月天数
echo "<br />上周:<br />";


mktime函数

mktime() 函数返回一个日期的 Unix 时间戳。

参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。

参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。

语法

mktime(hour,minute,second,month,day,year,is_dst)

 代码如下 复制代码
echo date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1-7,date("Y"))),"<br />";
echo date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7-7,date("Y"))),"<br />";
echo "<br>本周:<br>";
echo date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y"))),"<br />";
echo date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y"))),"<br />";
echo "<br>上月:<br>";
echo date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m")-1,1,date("Y"))),"<br />";
echo date("Y-m-d H:i:s",mktime(23,59,59,date("m") ,0,date("Y"))),"<br />";
echo "<br>本月:<br>";
echo date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),1,date("Y"))),"<br />";
echo date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("t"),date("Y"))),"<br />";
$getMonthDays = date("t",mktime(0, 0 , 0,date("n")+(date("n")-1)%3,1,date("Y")));//本季度未最后一月天数
echo "<br>本季度:<br>";
echo date('Y-m-d H:i:s', mktime(0, 0, 0,date('n')-(date('n')-1)%3,1,date('Y'))),"<br />";
echo date('Y-m-d H:i:s', mktime(23,59,59,date('n')+(date('n')-1)%3,$getMonthDays,date('Y'))),"<br />";
$jdtoday = gregoriantojd(date('n'), date('j'), date('y'));
$offset = jddayofweek($jdtoday)-1;
for($i=0-$offset; $i<7-$offset; $i++){
   $date = strtotime($i.' days');
   echo('<th>'.date('D', $date).'/'.date('n-j', $date).'</th>');
}
?>

参数 描述
hour 可选。规定小时。
minute 可选。规定分钟。
second 可选。规定秒。
month 可选。规定用数字表示的月。
day 可选。规定天。
year 可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。
is_dst

可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。

自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。

本文章来给大家介绍PHP.ini中文配置说明,希望有需要了解php.ini配置文件的同学不防进入参考。

php.ini中文配置说明

;;;;;;;;;;; 

; 警告 ; 

;;;;;;;;;;; 

; 此配置文件是对于新安装的PHP的默认设置. 

; 默认情况下,PHP使用此配置文件安装 

; 此配置针对开发目的,并且*不是*针对生产环境 

; 基于一些安全方面的考虑,在你的网站上线之前,请考虑使用php.ini-recommended 

; 以及在线文档 http://php.net/manual/en/security.php. 

  

  

;;;;;;;;;;;;;;;;;;; 

; 关于 php.ini   ; 

;;;;;;;;;;;;;;;;;;; 

; 此文件控制了PHP行为的很多方面.  为了让PHP能够读取它 

; 必须命名为 'php.ini'.  PHP 在其当前工作目录,由PHPRC环境变量指定目录 

; 以及由编译时指定的目录(按此顺序)查找此文件 

; 在Windows环境下, 编译时目录是Windows目录. 

; 在命令行模式下查找php.ini的目录可以被-c参数覆盖. 

; 此文件的语法非常简单. 

; 空行和由分号开始的行会被忽略(你可能已经猜到了). 

; 段的开头(例如 [Foo]) 同样会被悄悄忽略 

; 即使在将来他们可能会有其他作用. 

; 使用以下语法来设定指令: 

; directive = value 

; 指令 = 值 

; 指令名称是 *大小写敏感* - foo=bar 和 FOO=bar 是不同的. 

; 值可以是字符串,数值,PHP常量 (例如 E_ALL 和 M_PI),  

; INI 常量 (On, Off, True, False, Yes, No 和 None) 或者一个表达式 

; (例如 E_ALL & ~E_NOTICE), 或者带引号的字串 ("foo"). 

; 在INI文件中的表达式只能使用逻辑运算和圆括号: 

; |        逻辑或 

; &       逻辑与 

; ~       逻辑非 

; !        取反 

; 逻辑标志可以使用1,On,True或者Yes来打开. 

; 也可以使用0, Off, False 或者 No来关闭. 

; 在等号后面不写任何内容代表了一个空字符串 

; 或者使用 None 关键词: 

;  foo =         ; 将foo设置成一个空字串 

;  foo = none    ; 将foo设置成一个空字串 

;  foo = "none"  ; 将foo设置成字串 'none'

; 如果你在值中使用了常量, 并且这个常量属于一个动态加载的扩展模块 

; (不论是PHP扩展还是Zend扩展), 

; 那你只能在加载这些扩展 *之后* 使用这些常量. 

;;;;;;;;;;;;;;;;;;; 

; 关于这个文件  ; 

;;;;;;;;;;;;;;;;;;; 

; 在php.ini-dist 文件中所有的值都相当于内建的默认值 

; (就是如果没有使用php.ini, 或者如果你删除了这些行, 

; 就和内建的默认值一样). 

  

  

;;;;;;;;;;;;;;;;;;;; 

; 语言选项 ; 

;;;;;;;;;;;;;;;;;;;; 

  

; 打开在Apache下的PHP脚本语言引擎 

engine = On 

  

; 打开Zend Engine兼容模式(PHP 4.x) 

zend.ze1_compatibility_mode = Off 

  

; 允许 <? 标签.  否则,只有 <?php 和 <script> 标签被认为是PHP脚本. 

; 注意: 尽可能避免在开发可重新发布的程序或者库的时候使用简略标签,或者在不受你控制的服务器下发布, 

; 因为简略标签可能不被目标服务器支持.为了可移植性, 可重新发布的代码, 请不要使用简略标签 

short_open_tag = On 

  

; 使用ASP风格 <% %> 标签. 

asp_tags = Off 

  

; 浮点数中数值的有效位数(浮点数精度). 

precision    =  12 

  

; 强制2000年兼容 (可能引起不兼容浏览器的问题) 

y2k_compliance = On 

  

; 输出缓冲允许在你发送了body内容之后发送header(包括 cookies)  

; 代价是稍稍减缓了PHP输出层 

; 你可以在运行时调用 output buffering 函数来打开此功能 

; 你也可以将此指令设置为On来对所有文件打开输出缓冲 

; 如果你想将这个缓冲区限制到特定大小 - 你可以使用最大的字节数来代替'On',来作为这个指令的参数 (例如 output_buffering=4096). 

output_buffering = Off 

  

; 你可以将所有你脚本输出的内容重定向到指定函数.   

; 例如, 如果你设置 output_handler 到 "mb_output_handler",  

; 字符编码会被转换成为指定的编码.. 

; 设置任何的输出处理句柄会自动打开输出缓冲. 

; 注意: 如果想编写可移植脚本就不要依赖此INI配置 

;       取而代之的是, 明确的使用 ob_start() 来设置输出处理句柄. 

;       使用此ini指令可能引起问题,除非你很清楚的理解脚本正在做什么. 

; 注意: 你不能同时使用 "mb_output_handler" 和 "ob_iconv_handler"

;       并且你不能同时使用 "ob_gzhandler" 和 "zlib.output_compression". 

; 注意: 如果使用zlib.output_handler指令开启zlib输出压缩, 该指令必须为空. 

;output_handler = 

  

; 使用zlib库对输出进行压缩 

; 对此选项的有效值是 'off', 'on', 或者字节数 (用来压缩的缓冲大小 , 默认是 4KB) 

; 注意: 结果的chunk大小可能由于压缩对象的大小而不同. 

;       PHP输出块的大小一般压缩之后每个大小时几百个字节. 

;       如果你希望藉由一个大块的堆大小来获取更好的性能, 需要额外的打开 output_buffering 选项. 

; 注意: 你必须使用 zlib.output_handler 来替代标准的 

;       output_handler, 否则输出可能会有问题. 

zlib.output_compression = Off 

;zlib.output_compression_level = -1 

  

; 这里激活 zlib.output_compression 之后,你无法再指定额外的输出处理. 

; 这个设置和 output_handler 一样,但是处理顺序不同. 

;zlib.output_handler = 

  

; 立即刷新告知 PHP 让输出层在每次输出块之后立刻自动刷新. 

; 这和每次调用print()或者echo()函数以及任何一种HTML块后调用flush()一样.  

; 打开此选项会严重导致性能下降,一般只有用于调试情况下才建议打开. 

implicit_flush = Off 

  

; 如果反序列器找到一个可以作为示例的未定义类.未序列化的回调函数会被调用(使用未定义的类名作为参数),  

; 如果特定的函数未被定义或者如果此函数没有包含/实现丢失的类,则会发生一个警告.  

; 如果只有你真想要实现类似的回调函数,才设定此入口. 

unserialize_callback_func= 

  

; 当浮点和双精度被序列化后,浮点号后由 serialize_precision 指定存储精确度的有效位数.  

; 默认值是当浮点数被反序列解码后,数值仍旧相同. 

serialize_precision = 100 

  

; 是否打开强制通过引用传递参数给函数 

; 此方法被反对并且很有可能在未来版本的PHP/Zend中不再被支持. 

; 被孤立的指定的方法是参数应该在函数被声明的时候按照引用传入. 

; 你被鼓励来尝试上述方法并关闭此选项来确保你脚本在今后的新版本中仍旧可以正常工作 ( 每次你使用此特性的时候会受到一个警告 

; 并且参数会传值而不是传引用). 

allow_call_time_pass_reference = On 

  

; 安全模式 

safe_mode = Off 

  

; 默认情况下,安全模式在打开文件时,使用UID来比对检测. 

; 如果你只想使用GID做宽松的比对, 

; 打开 safe_mode_gid. 

safe_mode_gid = Off 

  

; 当 safe_mode 被打开, 此目录下包含的文件和子文件夹的UID/GID 检测会被绕过. 

; (目录必须在 include_path 中存在或者必须在包含时使用全路径) 

safe_mode_include_dir = 

  

; 当 safe_mode 被打开, 只有在 safe_mode_exec_dir 中定义的可执行文件能够通过exec函数组打开执行. 

safe_mode_exec_dir = 

  

; 设定某些的环境变量可能成为潜在的安全隐患. 

; 此指令包含一个逗号分隔的前导列表.  

; 在安全模式中, 用户可能只能改变符合这里所给出前导字符的变量.  

; 默认情况下,用户只能改变以PHP_开头的变量(例如. PHP_FOO=BAR). 

; 注意:  如果此指令为空, PHP会允许用户修改任何环境变量! 

safe_mode_allowed_env_vars = PHP_ 

  

; 此指令包含了一个用逗号分隔的环境变量列表, 用户无法通过 putenv() 函数来修改列表中的环境变量. 

; 这些变量即便已经在 safe_mode_allowed_env_vars 所设定的列表中,也会被被保护不允许修改. 

safe_mode_protected_env_vars = LD_LIBRARY_PATH 

  

; 如果设置了open_basedir, 将会限制文件操作只能是此指令下的目录和子目录.  

; 此指令对于每目录或者每虚拟主机配置文件最有意义. 此指令* 不会 *受安全模式开或者关的影响. 

;open_basedir = 

  

; 此指令允许你为了安全原因关闭指定的函数. 

; 它接受以逗号分隔的函数名的列表. 

; 此指令* 不会 *受安全模式开或者关的影响. 

disable_functions = 

  

; 此指令允许你由于安全原因关闭指定的类. 

; 它接受以逗号分隔的类名的列表. 

; 此指令* 不会 *受安全模式开或者关的影响. 

disable_classes = 

  

; 语法高亮模式的色彩. 任何在 <span style="color: ???????"> 中可接受的值都可以使用. 

;highlight.string  = #DD0000 

;highlight.comment = #FF9900 

;highlight.keyword = #007700 

;highlight.bg      = #FFFFFF 

;highlight.default = #0000BB 

;highlight.html    = #000000 

  

; 如果打开, 即便用户放弃了的请求也会被执行完成.  

; 在执行可能被用户打断或者浏览器超时所中断的请求时打开此选项. 

; ignore_user_abort = On 

  

; 指定PHP使用的实际路径的缓冲. 对于PHP打开很多文件来处理很多文件操作的系统上,应该增加此值. 

; realpath_cache_size=16k 

  

; 对于给定文件或者目录的缓冲真实路径信息的缓冲保留秒数. 对于很少修改文件的系统可以考虑增加此值. 

; realpath_cache_ttl=120 

  

; 其他 

; 考虑到PHP可能被其所安装的服务器上暴露的事实(例如. 被web服务器作为头部信息的签名).  

; 任何情况下这虽然不是安全威胁, 仍有可能暴露在你的服务器上是否正在使用PHP. 

expose_php = On 

  

  

;;;;;;;;;;;;;;;;;;; 

; 资源限制 ; 

;;;;;;;;;;;;;;;;;;; 

  

; 每个脚本最大执行秒数 

max_execution_time = 30 

; 每个脚本用来分析请求数据的最大时间 

max_input_time = 60 

; 最大输入变量的嵌套级别 

;max_input_nesting_level = 64 

; 每个脚本能够使用的最大内存数量 (128MB) 

memory_limit = 128M  

  

  

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

; 错误处理和记录 ; 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

  

; 错误报告时一个位. 对每一个数值取或可以得到最终的报告级别 

; E_ALL             - 所有错误和警告 (不包含 E_STRICT) 

; E_ERROR           - 致命的运行时错误 

; E_RECOVERABLE_ERROR  - 几乎致命的运行时错误 

; E_WARNING         - 运行时警告 (非致命错误) 

; E_PARSE           - 编译时语法错误 

; E_NOTICE          - 运行时提醒 (这些警告常常由你代码中的bug导致, 但是也有可能是有意的行为 (例如, 使用一个未初始化的变量并依赖于其会被自动初始化成为一个空字符串的事实) 

; E_STRICT          - 运行时提醒, 打开后PHP会给出针对你代码的最易移植和最好向后兼容性的建议 

; E_CORE_ERROR      - PHP初始化启动时的致命错误 

; E_CORE_WARNING    - 在PHP初始化时发生的警告 (非致命错误)  

; E_COMPILE_ERROR   - 致命的编译时错误 

; E_COMPILE_WARNING - 编译时警告 (非致命) 

; E_USER_ERROR      - 用户产生的错误信息 

; E_USER_WARNING    - 用户产生的警告信息 

; E_USER_NOTICE     - 用户产生的提示信息 

;例子: 

;   - 显示所有错误, 除了提示以及代码标准警告以外 

;error_reporting = E_ALL & ~E_NOTICE 

;   - 显示所有错误,除了提示以外 

;error_reporting = E_ALL & ~E_NOTICE | E_STRICT 

;   - 只显示错误 

;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR 

;   - 显示出了提示以及代码标准警告之外的错误 

error_reporting  =  E_ALL & ~E_NOTICE 

  

; 打印输出错误 (作为输出的一部分).  对于生产环境的网站来说, 

; 强烈建议你关闭此选项, 使用错误日志来替代 (详情参考下面内容).   

; 在一个生产环境下的web站点打开display_errors可能泄漏安全信息给最终用户, 例如web服务器的文件路径,你数据库的结构或者其他信息. 

; display_errors可用的值: 

; Off        - 不显示任何错误信息 

; stderr     - 将错误信息输出到STDERR (只有 CGI/CLI 格式下有效!) 

;display_errors = "stderr"

; stdout (On) - 输出错误信息到STDOUT上 

display_errors = On 

  

; 即使 display_errors 打开后,PHP启动序列中发生的错误也不会显示. 

; 强烈建议你保持 display_startup_errors 关闭状态, 除非在排错 

display_startup_errors = Off 

  

; 将错误输入到日志文件 (服务器指定的log,stderr或者error_log (以下指定)) 

; 和上面提到的一样, 强烈建议你在生产环境的web站点下使用错误日志来代替错误显示. 

log_errors = Off 

  

; 设定log_errors的最大长度. 在 error_log 关于源的信息也计算在内. 

; 默认是1024, 设置为0可以不限制任何最大长度. 

log_errors_max_len = 1024 

  

; 不要记录重复的信息.必须出现在同样文件的相同行之中的才被认为是重复信息,除非 ignore_repeated_source 被设为 true. 

ignore_repeated_errors = Off 

  

; 当忽略重复消息时忽略消息的来源. 当此设置打开后,不再记录来自不同文件或者不同行的相同消息. 

ignore_repeated_source = Off 

  

; 如果此选项被设置为 Off, 那么内存泄漏不会被显示 (不论在stdout还是在日志中).  

; 此项仅在debug编译模式下有效, 并且错误报告需要包含 E_WARNING 

report_memleaks = On 

  

;report_zend_debug = 0 

  

; 在$php_errormsg中保存最后一次错误/警告消息 (逻辑值). 

track_errors = Off 

  

; 关闭在错误信息中所包含的HTML标签. 

; 注意: 永远不要再生产环境中使用此特性. 

;html_errors = Off 

  

; 如果html_errors 设置为On, 则PHP产生可点击的错误信息,点击后会跳转到描述此错误或者引起此错误的函数具体信息的页面. 

; 你可以从 http://www.php.net/docs.php 下载一份PHP手册的副本 

; 并且将 docref_root指向你放置本地拷贝的以'/'开头的. 

; 你同时必须指定文件文件的包含点的扩展名. 

; 注意: 永远不要再生产环境中使用此特性. 

;docref_root = "/phpmanual/"

;docref_ext = .html 

  

; 在输出的错误信息前加上的字符串. 

;error_prepend_string = "<font color=#ff0000>"

  

; 在输出的错误信息之后加上的字符串. 

;error_append_string = "</font>"

  

; 将错误记录到指定文件. 

;error_log = filename 

  

; 将错误记录到 syslog (NT系统上的Event Log在Windows 95下不可用). 

;error_log = syslog 

  

  

;;;;;;;;;;;;;;;;; 

; 文件处理 ; 

;;;;;;;;;;;;;;;;; 

; 注意 - track_vars 在PHP 4.0.3 中总是打开的 

  

; 在PHP产生的URL中用来分隔参数的符号. 

; 默认是 "&". 

;arg_separator.output = "&amp;"

  

; PHP用来将URL分割输入到变量中的分隔符. 

; 默认是 "&". 

; 注意: 所有包含在指令内的字符都会被认为是分隔符! 

;arg_separator.input = ";&"

  

; 此指令描述了PHP注册GET, POST, Cookie, 环境 和 内置变量的顺序  (各自使用G, P, C, E 和 S , 一般使用 EGPCS 或 GPC).  注册使用从左往右的顺序, 新的值会覆盖旧的值. 

variables_order = "EGPCS"

  

; 是否将EGPCS变量注册成为全局变量. 

; 如果你不希望由于用户数据而导致你脚本的全局变量变得凌乱,你需要关闭此选项 

; 这个一般随着 track_vars 打开 - 在这种情况下你能够通过$HTTP_*_VARS[]存取所有的GPC变量. 

; 你应该努力写好脚本这样就不必打开register_globals  

; 如果代码不是经过详细的斟酌,那将变量作为全局使用可能很容易导致潜在的安全漏洞. 

register_globals = Off 

  

; 是否注册老形式的输入数组, HTTP_GET_VARS 和相关数组 

; 如果你不使用他们,建议为了提高性能关闭他们. 

register_long_arrays = On 

  

; 此指令让PHP确认是否申明 argv&argc 变量 (这些变量会包含GET信息).  

; 如果你不使用这些变量,为了提升性能应该关闭此选项. 

register_argc_argv = On 

  

; 当打开此项, SERVER 和 ENV 变量将在第一次被使用时而不是脚本一开始时创建(运行时) 

; 如果这些变量在脚本中没有被使用过, 打开此项会增加一点性能. 

; 为了使此指令有效,PHP指令 register_globals, register_long_arrays, 

; 以及 register_argc_argv 必须被关闭. 

auto_globals_jit = On 

  

; PHP可以接受的最大的POST数据大小. 

post_max_size = 8M 

  

; Magic quotes 

  

; 针对GET/POST/Cookie数据打开Magic quotes. 

magic_quotes_gpc = On 

  

; 针对实时产生的数据打开Magic quotes, 例如从SQL获取的数据, 从exec()返回的数据等等. 

magic_quotes_runtime = Off 

  

; 使用 Sybase 风格的 magic quotes (使用"来引导'替代'). 

magic_quotes_sybase = Off 

  

; 在任何PHP文档之前或之后自动增加文件. 

auto_prepend_file = 

auto_append_file = 

  

; 和 4.0b4一样, PHP 总是使用默认在头 Content-type: 的编码输出字符.  

; 将其设置为空可以禁用发送字符集. 

; PHP内建默认为text/html 

default_mimetype = "text/html"

;default_charset = "iso-8859-1"

  

; 总是填充 $HTTP_RAW_POST_DATA 变量. 

;always_populate_raw_post_data = On 

  

  

;;;;;;;;;;;;;;;;;;;;;;;;; 

; 路径和目录 ; 

;;;;;;;;;;;;;;;;;;;;;;;;; 

  

; UNIX: "/path1:/path2"

;include_path = ".:/php/includes"

; Windows: "path1;path2"

;include_path = ".;c:phpincludes"

  

; PHP页面的根路径, 只有非空时有效. 

; 如果PHP没有使用FORCE_REDIRECT来编译, 如果你将php作为CGI运行在任何web服务器下(除了IIS)的话,你必须设置doc_root 

; 针对安全问题查看文档.  一种替代方案是使用下面的cgi.force_redirect 

doc_root = 

  

; PHP使用/~username打开脚本的目录,非空时才有效. 

user_dir = 

  

; 可加载的扩展(模块)的目录位置. 

extension_dir = "./"

  

; 是否启用 dl() 函数.  dl() 函数无法正常的在多线程服务下运行, 例如IIS或者Zeus, 并在在这些服务软件下会自动禁用. 

enable_dl = On 

  

; 在绝大多数web服务器下,cgi.force_redirect 对于提供安全执行PHP作为CGI来说是很有必要的.  

; 没有配置的情况下,PHP会默认打开此项. 

; 你可以在这里关闭此项并且自己承担风险 

; **你可以在IIS安全的关闭此项,事实上,你必须关闭此项.** 

; cgi.force_redirect = 1 

  

; 如果 cgi.nph 被打开,就会强制CGI在每个请求时发送Status: 200. 

; cgi.nph = 1 

  

; 如果cgi.force_redirect被打开,并且你没有在Apache或者Netscape(iPlanet) web服务器下运行,  

; 你也许需要设置一个环境变量名让PHP来查找让其可以获取后继续执行. 设置此变量可能引起安全问题, 在设置之前请先了解可能引起的后果. 

; cgi.redirect_status_env = ; 

  

; cgi.fix_pathinfo 为CGI提供 *真实* PATH_INFO/PATH_TRANSLATED 支持.   

; PHP的预处理行为是设置 PATH_TRANSLATED 到 SCRIPT_FILENAME, 并且不去猜测 PATH_INFO 是什么.  

; 想获取关于 PATH_INFO 更多的信息, 查看 cgi 规范.   

; 将此值设置为1会引起PHP CGI修正它的路径来符合规范. 

; 设置为0会引起PHP类似前面的行为. 默认是1. 你应该修正你的脚本来使用 SCRIPT_FILENAME 而不是 PATH_TRANSLATED. 

; cgi.fix_pathinfo=0 

  

; 在IIS下的FastCGI (在基于 WINNT 的操作系统下) 支持莫让呼叫客户端的安全令牌的能力. 

; 这使得IIS能够定义其下运行的安全上下文. 

; 在Apache下的mod_fastcgi 目前不支持此特性 (03/17/2002) 

; 如果运行在IIS下设置为1. 默认是0. 

; fastcgi.impersonate = 1; 

  

; 关闭通过 FastCGI 连接的日志 

; fastcgi.logging = 0 

  

; cgi.rfc2616_headers 配置选项告知 PHP 当发送HTTP响应代码时使用什么类型的头 

; 如果设置为0,PHP发送被Apache支持的 Status: 头信息. 

; 当设置为1, PHP会发送 RFC2616 兼容的头信息. 

; 默认为0. 

; cgi.rfc2616_headers = 0 

  

  

;;;;;;;;;;;;;;;; 

; 文件上传 ; 

;;;;;;;;;;;;;;;; 

  

; 是否允许HTTP文件上传. 

file_uploads = On 

  

; 对于HTTP上传文件的临时文件目录 (如果没有指定则会使用系统默认). 

;upload_tmp_dir = 

  

; 允许上传的最大文件大小. 

upload_max_filesize = 2M 

  

  

;;;;;;;;;;;;;;;;;; 

; Fopen 包装 ; 

;;;;;;;;;;;;;;;;;; 

  

; 是否允许将URL作为文件 (例如 http:// 或者 ftp://) . 

allow_url_fopen = On 

  

; 是否允许 include/require 将URL作为文件 (例如 http:// 或者 ftp://) . 

allow_url_include = Off 

  

; 定义匿名ftp密码 (你的电子邮件地址) 

;from="john@doe.com"

  

; 定义 User-Agent 字符串 

; user_agent="PHP"

  

; 定义基于流的socket接口的超时时间 (秒) 

default_socket_timeout = 60 

  

; 如果你的脚本必须处理从 Macintosh 系统来的文件, 

; 或者你运行在一台Mac并且需要从unix或者win32系统上处理文件, 

; 设置此标志会引起PHP自动检测这些文件的EOL字符,这样fgets() 和 file() 就可以不用管文件的来源而直接处理了. 

; auto_detect_line_endings = Off 

  

  

;;;;;;;;;;;;;;;;;;;;;; 

; 动态扩展 ; 

;;;;;;;;;;;;;;;;;;;;;; 

; 如果你希望扩展自动加载, 使用下列语法: 

;   extension=modulename.extension 

; 例如,在Windows系统上: 

;   extension=msql.dll 

; ... 或者在 UNIX 下: 

;   extension=msql.so 

; 注意: 这里应该只是模块的名字;  

; 这里不需要模块的目录信息. 

; 使用上面的 extension_dir 指令来指定扩展的位置. 

  

  

; Windows Extensions 

; 注意:已经内建了ODBC支持,所以不需要针对ODBC的dll. 

; 注意:许多DLL文件位于 extensions/ (PHP 4) 或者 ext/ (PHP 5)目录中,和分割的PECL DLL下载在一起 (PHP 5). 

; 确定设置了正确的 extension_dir 指令. 

  

;extension=php_bz2.dll 

;extension=php_curl.dll 

;extension=php_dba.dll 

;extension=php_dbase.dll 

;extension=php_exif.dll 

;extension=php_fdf.dll 

;extension=php_gd2.dll 

;extension=php_gettext.dll 

;extension=php_gmp.dll 

;extension=php_ifx.dll 

;extension=php_imap.dll 

;extension=php_interbase.dll 

;extension=php_ldap.dll 

;extension=php_mbstring.dll 

;extension=php_mcrypt.dll 

;extension=php_mhash.dll 

;extension=php_mime_magic.dll 

;extension=php_ming.dll 

;extension=php_msql.dll 

;extension=php_mssql.dll 

;extension=php_mysql.dll 

;extension=php_mysqli.dll 

;extension=php_oci8.dll 

;extension=php_openssl.dll 

;extension=php_pdo.dll 

;extension=php_pdo_firebird.dll 

;extension=php_pdo_mssql.dll 

;extension=php_pdo_mysql.dll 

;extension=php_pdo_oci.dll 

;extension=php_pdo_oci8.dll 

;extension=php_pdo_odbc.dll 

;extension=php_pdo_pgsql.dll 

;extension=php_pdo_sqlite.dll 

;extension=php_pgsql.dll 

;extension=php_pspell.dll 

;extension=php_shmop.dll 

;extension=php_snmp.dll 

;extension=php_soap.dll 

;extension=php_sockets.dll 

;extension=php_sqlite.dll 

;extension=php_sybase_ct.dll 

;extension=php_tidy.dll 

;extension=php_xmlrpc.dll 

;extension=php_xsl.dll 

;extension=php_zip.dll 

  

;;;;;;;;;;;;;;;;;;; 

; 模块设置 ; 

;;;;;;;;;;;;;;;;;;; 

  

[Date] 

; 定义date函数使用的默认时区 

;date.timezone = 

  

;date.default_latitude = 31.7667 

;date.default_longitude = 35.2333 

  

;date.sunrise_zenith = 90.583333 

;date.sunset_zenith = 90.583333 

  

[filter] 

;filter.default = unsafe_raw 

;filter.default_flags = 

  

[iconv] 

;iconv.input_encoding = ISO-8859-1 

;iconv.internal_encoding = ISO-8859-1 

;iconv.output_encoding = ISO-8859-1 

  

[sqlite] 

;sqlite.assoc_case = 0 

  

[xmlrpc] 

;xmlrpc_error_number = 0 

;xmlrpc_errors = 0 

  

[Pcre] 

;PCRE 库反响追踪限制. 

;pcre.backtrack_limit=100000 

  

;PCRE 库递归限制.  

;请注意如果你设置此项到一个很高的值, 你可能耗尽所有的可用的进程堆并且最终弄宕PHP(由于到达了操作系统强制的堆大小的限制). 

;pcre.recursion_limit=100000 

  

[Syslog] 

; 是否定义不同的syslog变量 (例如. $LOG_PID, 

; $LOG_CRON, 等等.).  关闭此选项对性能有益.  

; 在运行时, 你可以调用 define_syslog_variables() 函数来定义这些变量. 

define_syslog_variables  = Off 

  

[mail function] 

; 针对Win32. 

SMTP = localhost 

smtp_port = 25 

  

; 针对Win32. 

;sendmail_from = me@example.com 

  

; 针对Unix.  可以支持参数 (默认: "sendmail -t -i"). 

;sendmail_path = 

  

; 强制额外的指定的参数被作为扩展参数传送给sendmail执行文件. 

; 这些参数总是替代mail()函数的第五个参数值, 甚至是在安全模式内. 

;mail.force_extra_parameters = 

  

[SQL] 

sql.safe_mode = Off 

  

[ODBC] 

;odbc.default_db    =  目前无效 

;odbc.default_user  =  目前无效 

;odbc.default_pw    =  目前无效 

  

; 允许或阻止持久连接. 

odbc.allow_persistent = On 

  

; 在重用前检查连接是否可用. 

odbc.check_persistent = On 

  

; 持久连接的最大数目.  -1 意味着没有限制. 

odbc.max_persistent = -1 

  

; 最大连接数 (持久 + 非持久).  -1 意味着没有限制. 

odbc.max_links = -1 

  

; 长字段处理.  返回变量的字节数.  0 意味着略过. 

odbc.defaultlrl = 4096 

  

; 二进制数据处理. 0 意味着略过, 1按照实际返回, 2 转换到字符. 

; 查看 odbc_binmode 和 odbc_longreadlen 的文档来获取针对 uodbc.defaultlrl 和 uodbc.defaultbinmode的解释 

odbc.defaultbinmode = 1 

  

[MySQL] 

; 允许或阻止持久连接. 

mysql.allow_persistent = On 

  

; 持久连接的最大数目.  -1 意味着没有限制. 

mysql.max_persistent = -1 

  

; 最大连接数 (持久 + 非持久).  -1 意味着没有限制. 

mysql.max_links = -1 

  

; mysql_connect()默认的端口号.  如果没有设置, mysql_connect() 会使用 $MYSQL_TCP_PORT 

; 或者 位于/etc/services的 mysql-tcp 入口或者编译时定义的MYSQL_PORT 值(按照此顺序查找).  

; Win32 只会查找MYSQL_PORT值. 

mysql.default_port = 

  

; 对于本地MySQL连接的默认socket名称. 如果为空, 则使用MySQL内建默认值. 

mysql.default_socket = 

  

; mysql_connect() 的默认host值(在安全模式中不会生效). 

mysql.default_host = 

  

; mysql_connect() 的默认user值(在安全模式中不会生效). 

mysql.default_user = 

  

; mysql_connect() 的默认password值(在安全模式中不会生效). 

; 注意在此文件中保存密码一般来说是 *糟糕* 的主义. 

; *任何* 使用PHP的用户可以执行 'echo get_cfg_var("mysql.default_password") 

; 并且获取到此密码! 而且理所当然, 任何有对此文件读权限的用户都可以获取到此密码. 

mysql.default_password = 

  

; 连接超时的最大时间 (秒) , -1 意味着没有限制. 

mysql.connect_timeout = 60 

  

; 追踪模式. 当 trace_mode 被打开 (=On), table/index 扫描的警告和SQL错误会被显示出来. 

mysql.trace_mode = Off 

  

[MySQLi] 

  

; 最大连接数.  -1 意味着没有限制. 

mysqli.max_links = -1 

  

; mysqli_connect()默认的端口号.  如果没有设置, mysql_connect() 会使用 $MYSQL_TCP_PORT 

; 或者 位于/etc/services的 mysql-tcp 入口或者编译时定义的MYSQL_PORT 值(按照此顺序查找).  

; Win32 只会查找MYSQL_PORT值. 

mysqli.default_port = 3306 

  

; 对于本地MySQL连接的默认socket名称. 如果为空, 则使用MySQL内建默认值. 

mysqli.default_socket = 

  

; mysqli_connect() 的默认host值(在安全模式中不会生效). 

mysqli.default_host = 

  

; mysqli_connect() 的默认user值(在安全模式中不会生效). 

mysqli.default_user = 

  

; mysqli_connect() 的默认password值(在安全模式中不会生效). 

; 注意在此文件中保存密码一般来说是 *糟糕* 的主义. 

; *任何* 使用PHP的用户可以执行 'echo get_cfg_var("mysqli.default_password") 

; 并且获取到此密码! 而且理所当然, 任何有对此文件读权限的用户都可以获取到此密码. 

mysqli.default_pw = 

  

; 允许或阻止持久连接. 

mysqli.reconnect = Off 

  

[mSQL] 

; 允许或阻止持久连接. 

msql.allow_persistent = On 

  

; 持久连接的最大数目.  -1 意味着没有限制. 

msql.max_persistent = -1 

  

; 最大连接数 (持久 + 非持久).  -1 意味着没有限制. 

msql.max_links = -1 

  

[OCI8] 

; 打开使用外部认证的授权连接 (OCI_SYSOPER, OCI_SYSDBA) 

;oci8.privileged_connect = Off 

  

; 连接: 每个进程的持久OCI8连接的最大数, -1 意味着没有限制. 

;oci8.max_persistent = -1 

  

; 连接: 一个进程允许保持一个空闲持久连接的最大秒数. 

; -1意味着空闲持久连接会永远被保持. 

;oci8.persistent_timeout = -1 

  

; 连接: 当oci_pconnect() 检测一个连接是否有效时每次发起ping之间必须通过的秒数.  

; 当设置为0后, 每个oci_pconnect() 会发起一个ping. Using -1 完全关闭ping. 

;oci8.ping_interval = 60 

  

; 调优: 此选项打开声明缓冲(statement cache), 并且指定缓冲多少声明. 使用0关闭声明缓冲. 

;oci8.statement_cache_size = 20 

  

; 调优: 打开声明预取(statement prefetch) 并且设置自动在声明执行后被取到行的数量. 

;oci8.default_prefetch = 10 

  

; 兼容性: 设置为On 意味着 oci_close() 不会关闭 oci_connect() 和 oci_new_connect() 的连接. 

;oci8.old_oci_close_semantics = Off 

  

[PostgresSQL] 

; 允许或阻止持久连接. 

pgsql.allow_persistent = On 

  

; 总是在 pg_pconnect() 时检测断开的持久连接. 

; 自动重置特性会引起一点开销. 

pgsql.auto_reset_persistent = Off 

  

; 持久连接的最大数目.  -1 意味着没有限制. 

pgsql.max_persistent = -1 

  

; 最大连接数 (持久 + 非持久).  -1 意味着没有限制. 

pgsql.max_links = -1 

  

; 是否忽略 PostgreSQL 后端通告消息. 

; 通告消息记录会需要一点开销. 

pgsql.ignore_notice = 0 

  

; 是否记录 PostgreSQL 后端通告消息. 

; 除非 pgsql.ignore_notice=0, 否则模块无法记录通告消息 

pgsql.log_notice = 0 

  

[Sybase] 

; 允许或阻止持久连接. 

sybase.allow_persistent = On 

  

; 持久连接的最大数目.  -1 意味着没有限制. 

sybase.max_persistent = -1 

  

; 最大连接数 (持久 + 非持久).  -1 意味着没有限制. 

sybase.max_links = -1 

  

;sybase.interface_file = "/usr/sybase/interfaces"

  

; 显示出的消息最小严重程度. 

sybase.min_error_severity = 10 

  

; 显示出的消息最小严重程度. 

sybase.min_message_severity = 10 

  

; 兼容老版本PHP 3.0的模式. 

; 如果设为 on, 会引起 PHP 自动绑定结果记录的类型到Sybase的类型,而不是将他们全部按照字符串处理.  

; 此兼容模式可能不会永久存在, 所以最好尝试在你代码中需要的地方作出必要的修改, 然后关闭此选项. 

sybase.compatability_mode = Off 

  

[Sybase-CT] 

; 允许或阻止持久连接. 

sybct.allow_persistent = On 

  

; 持久连接的最大数目.  -1 意味着没有限制. 

sybct.max_persistent = -1 

  

; 最大连接数 (持久 + 非持久).  -1 意味着没有限制. 

sybct.max_links = -1 

  

; 显示出的错误最小严重程度. 

sybct.min_server_severity = 10 

  

; 显示出的消息最小严重程度. 

sybct.min_client_severity = 10 

  

[bcmath] 

; 所有bcmath函数的小数位数 

bcmath.scale = 0 

  

[browscap] 

;browscap = extra/browscap.ini 

  

[Informix] 

; 对于 ifx_connect() 的默认host (不会在安全模式被应用). 

ifx.default_host = 

  

; 对于 ifx_connect() 的默认user (不会在安全模式被应用). 

ifx.default_user = 

  

; 对于 ifx_connect() 的默认password (不会在安全模式被应用). 

ifx.default_password = 

  

; 允许或阻止持久连接. 

ifx.allow_persistent = On 

  

; 持久连接的最大数目.  -1 意味着没有限制. 

ifx.max_persistent = -1 

  

; 最大连接数 (持久 + 非持久).  -1 意味着没有限制. 

ifx.max_links = -1 

  

; 如果设为 on, select 声明返回 text 段的内容而不是它的id. 

ifx.textasvarchar = 0 

  

; 如果设为 on, select 声明返回 byte 段的内容而不是它的id. 

ifx.byteasvarchar = 0 

  

; 固定长度字符列的尾部空格会被截去.  可能对 Informix SE 用户有帮助. 

ifx.charasvarchar = 0 

  

; 如果设为 on, text 和 byte 段会被dump到一个文件而不是在内存中保留它们. 

ifx.blobinfile = 0 

  

; NULL会被作为一个空字符串返回, 除非被设为1. 如果设为1, NULL会被作为字符串'NULL'返回. 

ifx.nullformat = 0 

  

[Session] 

; 用来存储/获取数据的处理方法. 

session.save_handler = files 

  

; 传送到save_handler的参数.  在使用文件的情况下, 这里是数据文件被保存的路径. 

; 注意: Windows 用户必须改变此值来使用PHP的会话函数. 

; 和在 4.0.1一样, 你可以定义如下路径: 

;     session.save_path = "N;/path"

; 这里的 N 是一个整数.  使用此参数会在目录内建立一个N层深度的子目录用来保存session文件, 

; 而不是将所有session文件保存在同一个/path目录内.   

; 这对你或当你的操作系统在一个目录内保存太多文件时出现问题很有帮助. 

; 并且对于处理大量session的服务器提供更高的效率. 

; 注意 1: PHP不会自动创建目录结构. 你可以使用在ext/session目录内的脚本来创建目录结构. 

; 注意 2: 如果你选择使用子目录来保存session,请检查下面关于垃圾回收的配置段 

; 文件存储模块默认使用600模式来创建文件,在使用中你可以改变此选项 

;     session.save_path = "N;MODE;/path"

; 这里的MODE由8进制来表示. 注意这里不会覆盖进程的umask. 

;session.save_path = "/tmp"

  

; 是否使用cookie. 

session.use_cookies = 1 

  

;session.cookie_secure =  

  

; 这个选项允许管理员去保护那些在URL中传送session id的用户免于被攻击 

; 默认是 0. 

; session.use_only_cookies = 1 

  

; session的名称 (作为cookie名称来使用). 

session.name = PHPSESSID 

  

; 在请求开始的时候初始化session. 

session.auto_start = 0 

  

; cookie的生存秒数,或者如果为0就直到浏览器重启. 

session.cookie_lifetime = 0 

  

; cookie有效的路径. 

session.cookie_path = / 

  

; cookie有效的域名. 

session.cookie_domain = 

  

; 是否将httpOnly标志增加到cookie上, 增加后则cookie无法被浏览器的脚本语言(例如JavaScript)存取. 

session.cookie_httponly =  

  

; 用于序列化数据的处理器. php是标准的PHP序列化器. 

session.serialize_handler = php 

  

; 定义'垃圾回收'进程在每次session初始化时开始的比例. 

; 比例由 gc_probability/gc_divisor来得出, 

; 例如. 1/100 意味着在每次请求时有1%的机会启动'垃圾回收'进程. 

  

session.gc_probability = 1 

session.gc_divisor     = 100 

  

; 在经过以下秒数之后, 存储的数据会被认为是'垃圾'并且被垃圾回收进程清理掉. 

session.gc_maxlifetime = 1440 

  

; 注意: 如果你使用子目录选项来保存session文件 

;       (查看在上面的session.save_path), 那么垃圾回收就 *不会* 自动发生. 

;       你需要通过一个shell脚本,cron或者其他方法来自行处理垃圾回收. 

;       例如, 下面的脚本相当于将session.gc_maxlifetime设置为 1440 (1440 秒 = 24 分钟): 

;          cd /path/to/sessions; find -cmin +24 | xargs rm 

  

; PHP 4.2 和更早版本有一个未公开的 特性/bug , 此特性允许你在全局初始化一个session变量,即便 register_globals 已经被关闭. 

; 如果此特性被使用,PHP 4.3 和更早版本会警告你. 

; 你可以关闭此特性并且隔离此警告. 这时候,如果打开bug_compat_42,那此警告只是被显示出来. 

  

session.bug_compat_42 = 1 

session.bug_compat_warn = 1 

  

; 检查HTTP Referer来防止带有id的外部URL. 

; HTTP_REFERER 必须包含从session来的这个字段才会被认为是合法的. 

session.referer_check = 

  

; 从此文件读取多少字节. 

session.entropy_length = 0 

  

; 在这里指定创建session id. 

session.entropy_file = 

  

;session.entropy_length = 16 

  

;session.entropy_file = /dev/urandom 

  

; 设置为 {nocache,private,public,} 来决定HTTP缓冲的类型 

; 留空则防止发送 anti-caching 头. 

session.cache_limiter = nocache 

  

; 文档在n分钟之后过期. 

session.cache_expire = 180 

  

; trans sid 支持默认关闭. 

; 使用 trans sid 可能让你的用户承担安全风险. 

; 使用此项必须小心. 

; - 用户也许通过email/irc/其他途径发送包含有效的session ID的URL给其他人. 

; - 包含有效session ID的URL可能被存放在容易被公共存取的电脑上. 

; - 用户可能通过在浏览器历史记录或者收藏夹里面的包含相同的session ID的URL来访问你的站点. 

session.use_trans_sid = 0 

  

; 选择hash方法 

; 0: MD5   (128 bits) 

; 1: SHA-1 (160 bits) 

session.hash_function = 0 

  

; 当转换二进制hash数据到可读形式时,每个字符保存时有几位. 

; 4 bits: 0-9, a-f 

; 5 bits: 0-9, a-v 

; 6 bits: 0-9, a-z, A-Z, "-", ","

session.hash_bits_per_character = 4 

  

; URL rewriter会在已经定义的一组HTML标签内查找URL. 

; form/fieldset 是特殊字符; 如果你在这里包含他们, rewriter会增加一个包含信息的隐藏<input>字段否则就是在URL中附加信息. 

; 如果你你想遵守XHTML, 删除form的入口. 

; 注意 所有合法的入口都需要一个"="符号, 甚至是没有任何值的. 

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="

  

[MSSQL] 

; 允许或阻止持久连接. 

mssql.allow_persistent = On 

  

; 持久连接的最大数目.  -1 意味着没有限制. 

mssql.max_persistent = -1 

  

; 最大连接数 (持久 + 非持久).  -1 意味着没有限制. 

mssql.max_links = -1 

  

; 显示出的错误最小严重程度. 

mssql.min_error_severity = 10 

  

; 显示出的消息最小严重程度. 

mssql.min_message_severity = 10 

  

; PHP 3.0 老版本的兼容模式. 

mssql.compatability_mode = Off 

  

; 连接超时 

;mssql.connect_timeout = 5 

  

; 查询超时 

;mssql.timeout = 60 

  

; 有效范围 0 - 2147483647.  默认 = 4096. 

;mssql.textlimit = 4096 

  

; 有效范围 0 - 2147483647.  默认 = 4096. 

;mssql.textsize = 4096 

  

; 每批记录的数量限制.  0 = 所有记录在一批内. 

;mssql.batchsize = 0 

  

; 指定 datetime 和 datetim4 栏如何返回 

; On => 返回数据转换到SQL服务器设置的格式 

; Off => 使用 YYYY-MM-DD hh:mm:ss 返回 

;mssql.datetimeconvert = On 

  

; 当连接到服务器时使用NT验证 

mssql.secure_connection = Off 

  

; 指定最大进程数. -1 = 库默认 

; msdlib 默认 25 

; FreeTDS 默认 4096 

;mssql.max_procs = -1 

  

; 指定客户端字符集.  

; 如果为空或者没有指定,客户端字符集将会使用freetds.conf的配置 

; 只有和FreeTDS编译时会被使用 

;mssql.charset = "ISO-8859-1"

  

[Assertion] 

; 断言(expr); 默认打开. 

;assert.active = On 

  

; 对于每个失败断言发起一个PHP警告. 

;assert.warning = On 

  

; 默认不要保释. 

;assert.bail = Off 

  

; 如果断言失败则调用用户自定义函数. 

;assert.callback = 0 

  

; 使用当前 error_reporting() Eval一个表达式.  如果你想要在eval()附近error_reporting(0) ,那设置为true. 

;assert.quiet_eval = 0 

  

[COM] 

; 包含GUID,IID或者TypeLibs的文件的文件名的文件的路径 

;com.typelib_file = 

; 允许 Distributed-COM 调用 

;com.allow_dcom = true 

; 自动注册位于com_load()函数的组件typlib的常量 

;com.autoregister_typelib = true 

; 注册常量大小写敏感 

;com.autoregister_casesensitive = false 

; 当有重复常量注册时显示警告 

;com.autoregister_verbose = true 

  

[mbstring] 

; 内部字符表示的语言. 

;mbstring.language = Japanese 

  

; 内部/脚本编码. 

; 部分编码无法作为内部编码使用. 

; (例如. SJIS, BIG5, ISO-2022-*) 

;mbstring.internal_encoding = EUC-JP 

  

; http 输入编码. 

;mbstring.http_input = auto 

  

; http 输出编码. mb_output_handler 必须作为函数被注册为输出缓冲 

;mbstring.http_output = SJIS 

  

; 按照mbstring.internal_encoding的设置打开自动编码转换 

; 当设置为On时,输入字符被转换为内部编码. 

; 注意: 不要针对可移植库/应用使用自动编码转换. 

;mbstring.encoding_translation = Off 

  

; 自动编码检测序列 

; 自动意味着 

;mbstring.detect_order = auto 

  

; 当无法将字符从一种转换到另一种时使用的置换符号 

;mbstring.substitute_character = none; 

  

; 使用mbstring函数 覆盖(替换) 单字节函数. 

; mail(), ereg(), 等等都会被 mb_send_mail(), mb_ereg() 等等覆盖, 

; 可以取的值是 0,1,2,4 或者他们的组合. 

; 例如, 7 就是覆盖所有函数. 

; 0: 不覆盖 

; 1: 覆盖 mail() 函数 

; 2: 覆盖 str*() 函数 

; 4: 覆盖 ereg*() 函数 

;mbstring.func_overload = 0 

  

[FrontBase] 

;fbsql.allow_persistent = On 

;fbsql.autocommit = On 

;fbsql.show_timestamp_decimals = Off 

;fbsql.default_database = 

;fbsql.default_database_password = 

;fbsql.default_host = 

;fbsql.default_password = 

;fbsql.default_user = "_SYSTEM"

;fbsql.generate_warnings = Off 

;fbsql.max_connections = 128 

;fbsql.max_links = 128 

;fbsql.max_persistent = -1 

;fbsql.max_results = 128 

  

[gd] 

; 告知jpeg解码器libjpeg警告并且尝试创建一个gd图像. 此警告会被作为一个通告显示 

; 默认为关闭 

;gd.jpeg_ignore_warning = 0 

  

[exif] 

; Exif UNICODE 用户注释会被作为UCS-2BE/UCS-2LE 和 JIS 来进行 JIS处理. 

; 当 mbstring.internal_encoding 设置为空,如果有 mbstring 支持,则会自动转换到给出的对应编码设置的编码. 

; 对于解码设置你可以在motorola和intel字符序列上进行选择. 解码设置不能设置为空. 

;exif.encode_unicode = ISO-8859-15 

;exif.decode_unicode_motorola = UCS-2BE 

;exif.decode_unicode_intel    = UCS-2LE 

;exif.encode_jis = 

;exif.decode_jis_motorola = JIS 

;exif.decode_jis_intel    = JIS 

  

[Tidy] 

; 当调用tidy时,默认指向tidy配置文件的路径 

;tidy.default_config = /usr/local/lib/php/default.tcfg 

  

; tidy是否自动清除和修复输出? 

; 警告: 不要在你产生非html内容时使用此项,例如产生动态图片时 

tidy.clean_output = Off 

  

[soap] 

; 打开或关闭WSDL缓冲特性. 

soap.wsdl_cache_enabled=1 

; 设置SOAP扩展存放缓冲文件的目录. 

soap.wsdl_cache_dir="/tmp"

; (存活时间) 设置当缓冲文件被用来替换原有缓冲文件的秒数. 

soap.wsdl_cache_ttl=86400 

  

; Local Variables: 

; tab-width: 4 

; End:

在php中数组是我们开发应用中不可少的了部份,下面我来把我自己学习php数组的一些操作给各位同学分享一下,希望有需要了解的同学可进入参考。

对于Web编程来说,最重要的就是存取和读写数据了。存储方式可能有很多种,可以是字符串、数组、文件的形式等。数组,可以说是PHP的数据应用中较重要的一种方式。PHP的数组函数众多,下面是我学习的小结,借此记之,便于以后鉴之。
. 数组定义
数组的定义使用 array()方式定义,可以定义空数组:

 代码如下 复制代码

<?php
$number = array(1,3,5,7,9);
//定义空数组
$result = array();
$color =array("red","blue","green");
//自定义键值
$language = (1=>"English",3=>"Chinese",5=>"Franch");
//定义二维数组
$two = array(
"color"=>array("red","blue"), //用逗号结尾
"week"=>array("Monday","Friday") //最后一句没有标点
);
?>

2. 创建数组
compact()
compact()函数——将一个或多个变量(包含数组)转换为数组:array compact ( mixed $varname [, mixed $... ] )。

 代码如下 复制代码

<?PHP
$number = "1,3,5,7,9";
$string = "I'm PHPer";
$array = array("And","You?");
$newArray = compact("number","string","array");
print_r ($newArray);
?>

compact()函数用于将两个或多个变量转换为数组,当然也包含数组变量。其参数是变量的名称而非带有$全名。相反的函数是extract()作用顾名思义就是将数组转换为单个的字符串,键值作为其字符串名称,数组值作为字符串的值。
运行结果:

Array (
[number] => 1,3,5,7,9
[string] => I'm PHPer
[array] => Array ( [0] => And [1] => You? )
)

array_combine()
array_combine()——将两个数组重组成一个数组,一个作键值一个做的值:array array_combine ( array $keys , array $values )

 代码如下 复制代码

<?PHP
$number = array("1","3","5","7","9");
$array = array("I","Am","A","PHP","er");
$newArray = array_combine($number,$array);
print_r ($newArray);
?>

array_combine函数不多说了,谁看了都明白。
运行结果:
Array ( [1] => I [3] => Am [5] => A [7] => PHP [9] => er )
range()
range()函数——创建指定范围的数组:

 代码如下 复制代码
<?PHP
$array1 = range(0,100,10);//0为起始值,100为结束值,10为步进值(默认步进值为1).
print_r($array1);
echo"<br />";
$array2 = range("A","Z");
print_r($array2);
echo "<br />";
$array3 = range("z","a");
print_r($array3);
?>

array_fill()
array_fill()函数——填充数组函数:

 代码如下 复制代码
<?PHP
$array = range(1,10);
$fillarray = range("a","d");
$arrayFilled = array_fill(0,5,$fillarray);//这里的$fillarray可以是字符串,如"test".
echo "<pre>";
print_r ($arrayFilled);
echo "</pre>";
$keys = array("string","2",9,"SDK","PK");
$array2 = array_fill_keys($keys,"testing");
echo "<pre>";
print_r ($array2);
echo "</pre>";
?>

运行结果:
Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)

[1] => Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)

[2] => Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)

[3] => Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)

[4] => Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)

)
Array
(
[string] => testing
[2] => testing
[9] => testing
[SDK] => testing
[PK] => testing
)

3. 数组的遍历
foreach遍历
foreach (array_expression as $value){}
foreach (array_expression as $key => $value){}

 代码如下 复制代码

<?PHP
$speed = array(50,120,180,240,380);
foreach($speed as $keys=>$values){
echo $keys."=>".$values."<br />";
}
?>

运行结果:
0=>50
1=>120
2=>180
3=>240
4=>380
while循环遍历
while循环遍历一般结合list函数,以下是实例

 代码如下 复制代码
<?PHP
$staff = array(
array("姓名","性别","年龄"),
array("小张","男",24),
array("小王","女",25),
array("小李","男",23)
);
echo "<table border=2>";
while(list($keys,$value) = each($staff)){
list($name,$sex,$age) = $value;
echo "<tr><td>$name</td><td>$sex</td><td>$age</td></tr>";
}
echo "</table>";
?>

for循环遍历

 代码如下 复制代码
<?PHP
$speed = range(0,220,20);
for($i =0;$i<count($speed);$i++) {
echo $speed[$i]." ";
}
?>

运行结果:
0 20 40 60 80 100 120 140 160 180 200 220
4. 数组的指针操作
涉及函数包括reset、prev、end、next、current、each。
实例一:next 与 prev

 代码如下 复制代码
<?PHP
$speed = range(0,220,20);
echo current($speed);//输出当前位置的值(在数组的开头位置)
$i = rand(1,11);
while($i--){
next($speed);//指针从当前位置向后移动一位
}
echo current($speed);//输出当前位置的值
echo "<br />";
echo prev($speed);//输出前一位置数组值
echo "<br />";
echo reset($speed);//重置数组的指针,将指针指向起始位置
echo "<br />";
echo end($speed);//输出最后位置的数组值
echo "<br />";
?>

运行结果:
0220
200
0
220
实例二:each函数指针操作

 代码如下 复制代码
<?PHP
$speed = range(0,200,40);
echo "each实现指针下移 <br />";
echo "0挡的速度是".current(each($speed))."<br />";
echo "1挡的速度是".current(each($speed))."<br />";
echo "2挡的速度是".current(each($speed))."<br />";
echo "3挡的速度是".current(each($speed))."<br />";
echo "4挡的速度是".current(each($speed))."<br />";
echo "5挡的速度是".current(each($speed))."<br />";
echo "使用each函数实现数组指针的移动,进行数组遍历 <br />";
reset($speed);//这里是将数组指针指向数组首
while(list($key,$value)=each($speed)){
echo $key."=>".$value."<br />";
}
?>

运行结果:
each实现指针下移
0挡的速度是0
1挡的速度是40
2挡的速度是80
3挡的速度是120
4挡的速度是160
5挡的速度是200
使用each函数实现数组指针的移动,进行数组遍历
0=>0
1=>40
2=>80
3=>120
4=>160
5=>200
5. 数组的增添删改操作
增添数组成员
实例一:$num[] = value直接赋值追加到数组末尾:
[code

 代码如下 复制代码
]<?PHP
$num = array(1=>80,2=>120,3=>160);
echo "使用表达式添加数组成员<br />";
$num[]=240;
print_r($num);
?>

运行结果:
使用表达式添加数组成员
Array ( [0] => 80 [1] => 120 [2] => 160 [3] => 240 )
实例二:array_pad函数,数组数组首尾选择性追加

 代码如下 复制代码

<?PHP
$num = array(1=>80,2=>120,3=>160);
$num = array_pad($num,4,200);
echo "使用array_pad函数向数组尾部添加成员<br />";
print_r($num);
echo "<br />array_pad 还可以填充数组首部<br />";
$num = array_pad($num,-8,40);
print_r($num);
?>

运行结果:
使用array_pad函数向数组尾部添加成员
Array ( [0] => 80 [1] => 120 [2] => 160 [3] => 200 )
array_pad 还可以填充数组首部
Array ( [0] => 40 [1] => 40 [2] => 40 [3] => 40 [4] => 80 [5] => 120 [6] => 160 [7] => 200 )
实例三:入栈操作追加(array_push):

 代码如下 复制代码
<?PHP
$num = array(1=>80,2=>120,3=>160);
array_push($num,200,240,280);//可以自己追加,直接加在数组结尾
print_r($num);
?>

运行结果:
Array ( [1] => 80 [2] => 120 [3] => 160 [4] => 200 [5] => 240 [6] => 280 )
实例四:array_unshift()在开头添加数组成员

 代码如下 复制代码

<?PHP
$num = array(1=>80,2=>120,3=>160);
array_unshift($num,0,40);//可以自己追加,直接加在数组结尾
print_r($num);
?>

运行结果:
Array ( [0] => 0 [1] => 40 [2] => 80 [3] => 120 [4] => 160 )
注意:array_unshift()函数使用后数组的键值将会从0开始!
删减数组成员
实例一:unset()命令删除数组成员或数组:

 代码如下 复制代码
<?PHP
$num = array_fill(0,5,rand(1,10));
print_r($num);
echo "<br />";
unset($num[4]);
print_r($num);
echo "<br />";
unset($num);
if(is_array){
echo "unset命令不能删除整个数组";
}else{
echo "unset命令可以删除数组";
}
?>

运行结果:(运行出错及说明数组也被删除,不再存在)
Array ( [0] => 9 [1] => 9 [2] => 9 [3] => 9 [4] => 9 )
Array ( [0] => 9 [1] => 9 [2] => 9 [3] => 9 )

Notice: Use of undefined constant is_array - assumed 'is_array' in H:wampwwwtestingeditorplustest.php on line 21
unset命令不能删除整个数组
实例二:array_splice()函数删除数组成员

 代码如下 复制代码
<?php
$a=array("red", "green", "blue", "yellow");
count ($a); //得到4
array_splice($a,1,1); //删除第二个元素
count ($a); //得到3
echo $a[2]; //得到yellow
echo $a[1]; //得到blue
?>

实例三:array_unique删除数组中的重复值:

 代码如下 复制代码

<?php
$a=array("red", "green", "blue", "yellow","blue","green");
$result = array_unique($a);
print_r($result);
?>

运行结果:
Array ( [0] => red [1] => green [2] => blue [3] => yellow )
实例四:array_merge、array_merge_recursive合并数组

 代码如下 复制代码
<?php
$array1 = array("r"=>"red",1,2,3,4);
$array2 = array("b"=>"blue",4=>5,6,7,8,9);
$array3 = array("r"=>"read",4=>10,2=>11);
$array4 = array(
array(4=>10),
array(7=>13)
);
$array5 = array(
array(4=>11),
array(6=>12)
);
$result = array_merge($array1,$array2,$array3,$array4,$array5);
echo "<pre>";
print_r($result);
echo "</pre>";
$result = array_merge_recursive($array1,$array2,$array3,$array4,$array5);
echo "<pre>";
print_r ($result);
echo "</pre>";
?>

运行结果:
Array
(
[r] => read
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[b] => blue
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
[10] => 11
[11] => Array
(
[4] => 10
)

[12] => Array
(
[7] => 13
)

[13] => Array
(
[4] => 11
)

[14] => Array
(
[6] => 12
)

)
Array
(
[r] => Array
(
[0] => red
[1] => read
)

[0] => 1
[1] => 2
[2] => 3
[3] => 4
[b] => blue
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
[10] => 11
[11] => Array
(
[4] => 10
)

[12] => Array
(
[7] => 13
)

[13] => Array
(
[4] => 11
)

[14] => Array
(
[6] => 12
)

)

注:1. array_merge的键名是数字的将重新建立索引;遇到相同的字符串键名时,后面的将覆盖前面的。 2. array_merge_recursive函数的作用是将相同字符串的键名单元整合成一个数组。
6. 数组的键值和值操作
实例一:in_array()检测数组中是否有某个值存在

 代码如下 复制代码

<?php
$array = range(0,9);
if(in_array(9,$array)){
echo "数组中存在";
}
?>

运行结果:数组中存在
实例二:key()取得数组当前的键名:

 代码如下 复制代码

<?php
$array = range(0,9);
$num = rand(0,8);
while($num--)
next($array);
$key = key($array);
echo $key;
?>

此实例结果为动态结果,范围(0-8),不做结果演示。
实例三:list()函数把数组中的值赋给指定变量:

 代码如下 复制代码
<?PHP
$staff = array(
array("姓名","性别","年龄"),
array("小张","男",24),
array("小王","女",25),
array("小李","男",23)
);
echo "<table border=2>";
while(list($keys,$value) = each($staff)){
list($name,$sex,$age) = $value;
echo "<tr><td>$name</td><td>$sex</td><td>$age</td></tr>";
}
echo "</table>";
?>

实例四:array_flip()交换数组的键值和值:

 代码如下 复制代码

<?PHP
$array = array("red","blue","yellow","Black");
print_r($array);
echo "<br />";
$array = array_flip($array);
print_r($array);
?>

运行结果:
Array ( [0] => red [1] => blue [2] => yellow [3] => Black )
Array ( [red] => 0 [blue] => 1 [yellow] => 2 [Black] => 3 )

 代码如下 复制代码

<?PHP
$array = array("red","blue","yellow","Black");
$result = array_keys($array);
print_r($result);
echo "<br />";
$result = array_values($array);
print_r($result);
?>

运行结果:
Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 )
Array ( [0] => red [1] => blue [2] => yellow [3] => Black )
实例六:array_search()搜索数值:

 代码如下 复制代码

<?PHP
$array = array("red","blue","yellow","Black");
$result = array_search("red",$array);
if(($result === NULL)){
echo "不存在数值red";
}else{
echo "存在数值 $result";
}
?>

结果:存在数值 0
函数array_search()返回的值可能为false或0或NULL,所以在判断时注意要用"==="
7. 数组的排序
实例一:sort()、rsort()/asort()、arsort()对数组排序:

 代码如下 复制代码

<?PHP
$array = array("b","c","d","a");
sort($array);//从低到高排序
print_r($array);
echo "<br />";
rsort($array);//逆向排序
print_r($array);
?>

结果:
Array ( [0] => a [1] => b [2] => c [3] => d )
Array ( [0] => d [1] => c [2] => b [3] => a )
sort()、rsort()函数对数组进行从低到高的排序,返回结果为bool值;
asort()、arsort()函数是保留键值的排序,排序后键值不重新索引。
实例二:将数组顺序打乱——shuffle()函数:

 代码如下 复制代码

<?PHP
$array = array("a","b","c","d");
shuffle($array);//从低到高排序
print_r($array);
?>

结果为动态结果:
Array ( [0] => c [1] => a [2] => d [3] => b )
shuffle的结果有点随机的意味,每次刷新都不一样。
实例三:array_reverse()数组反向:

 代码如下 复制代码

<?PHP
$array = array("d","b","a","c");
$array = array_reverse($array);//从低到高排序
print_r($array);
?>

运行结果:
Array ( [0] => c [1] => a [2] => b [3] => d )
实例四:自然排序算法——natsort()和natcasesort();

 代码如下 复制代码

<?PHP
$array = array("sort2","Sort5","sort1","sort4");
natsort($array);//从低到高排序
print_r($array);
echo "<br />";
natcasesort($array);
print_r($array);
?>

结果:
Array ( [1] => Sort5 [2] => sort1 [0] => sort2 [3] => sort4 )
Array ( [2] => sort1 [0] => sort2 [3] => sort4 [1] => Sort5 )
natsort()、natcasesort()对数组进行自然排序,就是使用数字的正常排序算法。natcasesort会忽略大小写。
实例五:对数组进行键值排序ksort():

 代码如下 复制代码

<?PHP
$array = array(1=>"sort2",4=>"Sort5",2=>"sort1",3=>"sort4");
ksort($array);//从低到高排序
print_r($array);
?>

结果:
Array ( [1] => sort2 [2] => sort1 [3] => sort4 [4] => Sort5 )
注意:ksort()函数重新建立了索引。

8. 数组的其他用法

$

 代码如下 复制代码

array = array ('A', 'B', 'C' );
//使用int array_unshift(array $array,mixed variable[,mixed variable…])在数组头添加元素
array_unshift ( $array, 'E', 'F', 'G' );
var_dump ( $array );
 

$array = array ('A', 'B', 'C' );
//使用int array_push(array $array,mixed variable[,mixed variable…])在数组结尾添加元素
array_push ( $array, 'E', 'F', 'G' );
var_dump ( $array );
 

$array = array ('A', 'B', 'C' );
//使用mixed array_shift(array $array)在数组头删除元素
array_shift ( $array );
var_dump ( $array );
 

$array = array ('A', 'B', 'C' );
//使用mixed array_pop(array $array)在数组尾删除元素
array_pop ( $array );
var_dump ( $array );

 

/*
* 在数组中搜索一个特定值,如果找到返回TRUE否则返回FALSE
* boolean in_array(mixed needle,array haystack[,boolean strict])
* 在数组中找到一个指定的健,如果找到返回TRUE否则返回FALSE
* boolean array_eky_exists(mixed key,array array)
* 在数组中搜索一个特定值,如果找到返回TRUE否则返回FALSE
* boolean array_search(mixed needle,array haystack[,boolean strict])
* 获取数组所有键组成的新数组
* array array_keys(array array[,mixed search_value])
* 获取数组所有值组成的新数组
* array array_values(array array)
* 确定数组大小
* integer count(array array[,int mode])
* integer sizeof(array array[,int mode])
* 统计数组元素出现频率
* array array_count_values(array array)
* 删除数组中重复的值,返回一个由唯一值组成的数组
* array array_unique(array array)
* 逆置数组元素顺序,preserve_key如果为TRUE则数组键值顺序不变
* array array_reverse(array array[,boolean preserve_key])
* 置换数组键和值
* array array_flip(array array)
* 数组顺序排序,sort_flags参数可选,默认行为
* SORT_NUMBERIC,按数值排序,对整数或浮点数排序很有用
* SORT_REGULAR,按照ASCII值排序
* SORT_STRING,按接近人所认识的正确顺序排序
* asort函数键值顺序不变
* void sort(array array[,int sort_flags])
* void asort(array array[,int sort_flags])
* 数组逆序排序,sort_flags参数可选,默认行为
* SORT_NUMBERIC,按数值排序,对整数或浮点数排序很有用
* SORT_REGULAR,按照ASCII值排序
* SORT_STRING,按接近人所认识的正确顺序排序
* arsort函数键值顺序不变
* void rsort(array array[,int sort_flags])
* void arsort(array array[,int sort_flags])
* 数组自然排序
* void natsort(array array)
* 不区分大小写的自然排序
* void natcasesort(array array)
* 健键值对数组排序
* boolean ksort(array array[,int sort_flags])
* 健键值对数组逆序排序
* boolean krsort(array array[,int sort_flags])
* 根据用户自定义顺序排序
* void usort(array array,callback function_name)
* 将数组合并到一起,返回一个联合的数组。array_merge后面覆盖前面,array_merge_recursive合并在一起
* array array_merge(array array1[array array2……])//一个以上
* array array_merge_recursive(array array1,array array2[,array ……])//两个以上
* 键和值组成新的数组
* array array_combine(array key,array value)
* 返回数组一部分,从健offset开始,到offse+length位置结束
* array array_slice(array array, int offset [,int length])
* 删除从offset开始到offset+length结束的所有元素,并以数组的形式返回删除的元素
* array array_splice(array, int offset [,int length[,array peplacement]])
* 求数组的交集,键值为第一个数组中键值
* array array_intersect(array array1,array array2[,arrayN……])
* 求数组的交集包含了键值相等,键值为第一个数组中键值
* array array_intersect_assoc(array array1,array array2[,arrayN……])
* 求数组的差集,第一个数组在其他数组没有的值
* array array_diff(array array1,array array2[,arrayN……])
* 求数组的差集,第一个数组在其他数组没有的值包含了键值相等
* array array_diffassoc(array array1,array array2[,arrayN……])
* 返回数组中一个或多个键值
* mixed array_rand(array array[,int num_entries])
* 随即洗牌函数
* void shuffle(array input_array)
* 对数组中的值求和
* mixed array_sum(array array);
* 将数组分解为一个多维数组,它包含了size个元素
* array array_chunk(array array, int size [,boolean preserve_keys])
*/

[!--infotagslink--]

相关文章

  • java8如何用Stream查List对象某属性是否有重复

    这篇文章主要介绍了java8如何用Stream查List对象某属性是否有重复的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-11
  • R语言 如何删除指定变量或对象

    这篇文章主要介绍了R语言删除指定变量或对象的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • 如何在Spring WebFlux的任何地方获取Request对象

    这篇文章主要介绍了如何在Spring WebFlux的任何地方获取Request对象,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下...2021-01-26
  • 牛叉的Jquery――Jquery与DOM对象的互相转换及DOM的三种操作

    只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的dom操作。这就需要我们知道如何将jQuery对象和DOM的相互转换的方法。1...2015-10-30
  • JavaScript预解析,对象详解

    这篇文章主要介绍了JavaScript预解析,对象的的相关资料,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助...2021-11-10
  • js如何打印object对象

    js调试中经常会碰到输出的内容是对象而无法打印的时候,光靠alert只能打印出object标示,却不能打印出来里面的内容,甚是不方便,于是各方面整理总结了如下一个函数,能够将数组或者对象这类的结果一一打印出来,具体代码如下: fu...2015-10-21
  • php上传图片学习笔记与心得

    我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
  • Smarty模板学习笔记之Smarty简介

    1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
  • 替换json对象中的key最佳方案

    本文给大家介绍如何替换json对象中的key,通过实例代码给大家介绍key的替换方法,代码也很简单,需要的朋友参考下吧...2021-06-02
  • javascript self对象使用详解

    这篇文章主要介绍了javascript self对象使用详解的相关资料,需要的朋友可以参考下...2016-10-20
  • ActiveX部件不能创建对象:dm.dmsoft代码:800A01AD

    vbs调用插件报:ActiveX部件不能创建对象,代码:800A01AD,一般是因为病毒导致dll文件丢失或者64系统问题导致,需要的朋友可以参考下...2020-06-30
  • php Observer观察者模式之学习笔记

    当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25
  • JS实现简单面向对象的颜色选择器实例

    这篇文章主要介绍了JS实现简单面向对象的颜色选择器,以完整实例形式分析了JavaScript基于面向对象实现颜色选择器的具体步骤与实现技巧,需要的朋友可以参考下...2016-04-23
  • 解决SpringCloud Feign传对象参数调用失败的问题

    这篇文章主要介绍了解决SpringCloud Feign传对象参数调用失败的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-24
  • 对象题目的一个坑 理解Javascript对象

    这篇文章主要介绍了Javascript对象,特别为大家分享了对象题目的一个坑,提供了解题思路,感兴趣的小伙伴们可以参考一下...2015-12-24
  • Xml中使用foreach遍历对象实现代码

    这篇文章主要介绍了Xml中使用foreach遍历对象实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-12-04
  • HTML5 FileReader对象的具体使用方法

    这篇文章主要介绍了HTML5 FileReader对象的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-30
  • Bootstrap媒体对象的实现

    在web页面中,图片居左,内容居右排列,是非常常见的效果,它也就是媒体对象,它是一种抽象的样式,可以用来构建不同类型的组件。本文给大家介绍Bootstrap媒体对象的实现,感兴趣的朋友一起学习吧...2016-05-04
  • 理解JavaScript事件对象

    这篇文章主要为大家介绍了JavaScript事件对象,了解JavaScript事件...2016-01-26
  • PHP 日期函数 学习笔记介绍

    举一个简单的date例子 我将使用echo命令把内容输出到我们的客户端(浏览器)。我将使用下面的代码做为基础代码。 代码如下 复制代码 <!DOCTY...2016-11-25