四个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实用功能,希望对大家的学习有所帮助。