四个PHP非常实用的功能
最近写的几个PHP实用功能整理了一下,弄成一个文档,写上说明,方便以后使用!一共有4个PHP实用功能,现在跟大家分享,喜欢的朋友可以把它收藏起来,说不定以后用得上。
1.PHP函数的任意数目的参数
您可能知道PHP允许你定义一个默认参数的函数。但您可能并不知道PHP还允许你定义一个完全任意的参数的函数
下面是一个示例向你展示了默认参数的函数:
//两个默认参数的函数 functionfoo($arg1='',$arg2=''){ echo"arg1:$arg1\n"; echo"arg2:$arg2\n"; } foo('hello','world'); /*输出: arg1:hello arg2:world */ foo(); /*输出: arg1: arg2: */
现在我们来看一看一个不定参数的函数,其使用到了func_get_args()方法:
//是的,形参列表为空 functionfoo(){ //取得所有的传入参数的数组 $args=func_get_args(); foreach($argsas$k=>$v){ echo"arg".($k+1).":$v\n"; } } foo(); /*什么也不会输出*/ foo('hello'); /*输出 arg1:hello */ foo('hello','world','again'); /*输出 arg1:hello arg2:world arg3:again */
2.Glob()查找文件
有很多PHP的函数都有一个比较长的自解释的函数名,但是,当您看到glob()的时候,您可能并不知道这个函数是用来干什么的,除非您对它已经很熟悉了。
你可以认为这个函数就好?scandir()一样,其可以用来查找文件。
//取得所有的后缀为PHP的文件 $files=glob('*.php'); print_r($files); /*输出: Array ( [0]=>phptest.php [1]=>pi.php [2]=>post_output.php [3]=>test.php ) */
您还可以查找多种后缀名
//取PHP文件和TXT文件 $files=glob('*.{php,txt}',GLOB_BRACE); print_r($files); /*输出: Array ( [0]=>phptest.php [1]=>pi.php [2]=>post_output.php [3]=>test.php [4]=>log.txt [5]=>test.txt ) */
您还可以加上路径:
$files=glob('../images/a*.jpg'); print_r($files); /*输出: Array ( [0]=>../images/apple.jpg [1]=>../images/art.jpg ) */
如果你想得到绝对路径,你可以调用?realpath()函数:
$files=glob('../images/a*.jpg'); //appliesthefunctiontoeacharrayelement $files=array_map('realpath',$files); print_r($files); /*outputlookslike: Array ( [0]=>C:\wamp\www\images\apple.jpg [1]=>C:\wamp\www\images\art.jpg ) */
3.查看内存使用情况
观察你程序的内存使用能够让你更好的优化你的代码。
PHP是有垃圾回收机制的,而且有一套很复杂的内存管理机制。你可以知道你的脚本所使用的内存情况。要知道当前内存使用情况,你可以使用?memory_get_usage()函数,如果你想知道使用内存的峰值,你可以调用memory_get_peak_usage()函数。
echo"Initial:".memory_get_usage()."bytes\n"; /*输出 Initial:361400bytes */ //使用内存 for($i=0;$i<100000;$i++){ $array[]=md5($i); } //删除一半的内存 for($i=0;$i<100000;$i++){ unset($array[$i]); } echo"Final:".memory_get_usage()."bytes\n"; /*prints Final:885912bytes */ echo"Peak:".memory_get_peak_usage()."bytes\n"; /*输出峰值 Peak:13687072bytes */
4.查看CPU使用情况
使用?getrusage()函数可以让你知道CPU的使用情况。注意,这个功能在Windows下不可用。
print_r(getrusage()); /*输出 Array ( [ru_oublock]=>0 [ru_inblock]=>0 [ru_msgsnd]=>2 [ru_msgrcv]=>3 [ru_maxrss]=>12692 [ru_ixrss]=>764 [ru_idrss]=>3864 [ru_minflt]=>94 [ru_majflt]=>0 [ru_nsignals]=>1 [ru_nvcsw]=>67 [ru_nivcsw]=>4 [ru_nswap]=>0 [ru_utime.tv_usec]=>0 [ru_utime.tv_sec]=>0 [ru_stime.tv_usec]=>6269 [ru_stime.tv_sec]=>0 ) */
这个结构看上出很晦涩,除非你对CPU很了解。下面一些解释:
ru_oublock:块输出操作
ru_inblock:块输入操作
ru_msgsnd:发送的message
ru_msgrcv:收到的message
ru_maxrss:最大驻留集大小
ru_ixrss:全部共享内存大小
ru_idrss:全部非共享内存大小
ru_minflt:页回收
ru_majflt:页失效
ru_nsignals:收到的信号
ru_nvcsw:主动上下文切换
ru_nivcsw:被动上下文切换
ru_nswap:交换区
ru_utime.tv_usec:用户态时间(microseconds)
ru_utime.tv_sec:用户态时间(seconds)
ru_stime.tv_usec:系统内核时间(microseconds)
ru_stime.tv_sec:系统内核时间?(seconds)
以上就是分享给大家的PHP实用功能,希望对大家的学习有所帮助。