当前位置: 首页 > PHP > 你可能不知道的一些PHP函数的特性

你可能不知道的一些PHP函数的特性

  • 分类:PHP
  • 本文标签: PHP函数
  • 发布时间:2015-09-15 18:00:40
  • 作者:Ferman
  • 查看数: 318

这篇文章介绍的这些函数你可能都知道,也都用过,但是有一些细小的点你可能没有注意,而且开发中也会用到这些点,当你用到的时候,能想到这些PHP函数的特性,那么你不仅开发效率高,而且代码质量也高。你如果你开发中经常查手册的话,这些点你应该已经注意过。下面我将介绍一些这样的函数:

1、array_diff()

仅比较value的值,并且键值保持不变。

2、array_diff_assoc()

不仅比较value的值,而且比较key值,并且结果键值重新排序

3、array_diff_key($array1, $array2,$array3...)

包括所有出现在array1但是未出现在任何其他参数数组中的键名的值,在最后一个参数你还可以自定义一个函数

4、strip_tags($str,'<img><p>')

剥去html标签,但是保留img和p标签

5、in_array()

函数在第三个参数加个true,避免数据格式转换,以提高性能。

6、str_replace(array('1','2'),array('a','b'),$str)

str_replace 和 preg_match都可以以数组的方式传值

7、array_slice(array,offset,length, preserve)

第四个参数如果为true则保留键名,否则索引从新排序

8、array_search(value,array)

php返回键,php给出一个值,返回数组中对应改值的键,只返回一个,不会继续向下寻找

9、array_keys()

也是返回键值,但是如果有多个会返回多个键值。

10、@mkdir($dir,0777,true)

第三个值为true则递归创建目录。因为考虑到当前的umask,所以你即便指定了0777文件的权限也不会生效。有两种方法:①$oldmask = umask(0);mkdir($dir, 0777,true); umask($oldmask);② mkdir($dir, 0777,true);chmod($dir, 0777);不建议使用第一种方法,因为并发程序使用相同的umask会导致不可预知的情况。

11、register_shutdown_function(array(‘Debug’,'fatalError’))

页面被用户强制停止时、程序代码运行超时时、当php代码执行完成时、代码执行存在异常和错误、警告都会触发该函数,可以用在一些统计性程序中

12、array_merge()

合并多个数组。如果是关联数组,则相同键值后面会覆盖前面的。索引数组,不会覆盖会依次往后排

13、array_merge_recursive()

也是合并多个数组,与array_merge()不同的是,关联数组不会覆盖,而是会递归合并到前一个数组

14、json_encode()

默认会把中文汉字转为unicode字符,但是有的接口是不支持的,例如调用微信接口,传送这样的json字串会报错,在PHP5.4+版本有第二个参数JSON_UNESCAPED_UNICODE就可以解决。如果版本低,那就用urlencode和urldecode来解决。

15、strlen()

不要担心这个函数的性能,他可以在常数时间内获取字符串的长度。

16、mb_substr()

根据指定的字符集,按照字的个数截取字符串。该函数需要mb扩展开启

17、mb_strcut()

网上有很多文章说这个截取不如mb_substr准。其实并不是那样的。它是根据指定的字符集按照字节截取字符串,采用舍余取整规则来截取。该函数需要mb扩展开启

18、iconv($in_charset,$out_charset,$string)

在$out_charset 后面加//TRANSLIT,将开启转写模式,即当一个字符不能被目标字符集表示时,将转为相似的字符来表示。加//IGNORE,不能以目标字符集表达的字符将被舍弃。还有一个函数,需开启mb扩展,mb_convert_encoding()。也可以转换编码,有点事可以自动识别编码,但不如iconv效率高。

19、spl_autoload_register()

用来注册auto_load函数,项目中存在不同自动加载方式时,这个函数就会用到,避免__autoload()函数只能定义一次。要了解spl_autoload_register的执行原理。

20、auto_prepend_file()/auto_append_file()

除了传统的直接require以外,将页眉和脚注加入到每个页面中,还有一种办法,就是使用配置文件php.ini中的两个选项auto_prepend_file和auto_append_file。通过这两个配置选项来设置页眉和脚注,可以保证它们在每个页面的前后被载入。


21、file_get_contents();

将文件读入字符串中的首先方法,第三个参数可以模拟http请求.

$opts = array(
  'http'=>array(
    'timeout'=>3,
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);
$context = stream_context_create($opts);
$file = file_get_contents('x.com', false, $context);

22、count() 

第二个参数为1 时,递归进行统计数组

23、trim(),同样适用于ltrim、rtrim

echo rtrim('/mp3/3.mp3mp', '3m.p');

输出 "/mp3/".   结论:不用管第二个参数的字符顺序,只要第一个参数的最后一个字符在第二个参数中就会trim掉,然后接着trim倒数第二个,只要遇到一个不属于 3mp.  的才会停止。



PHP中函数方法 都是可变的(用于框架)。$a();     $obj->$a();


请在下面留言你也觉得值得分享的函数,让知道的人熟悉下,让不知道的人学习下。^_^


转载时请以 超链接的形式 注明:转自Ferman

                  

About me