就是把原来的数组中的数都“拆”成“单”位的。
下面是自己写的一个函数:
复制代码代码如下:
functionsplitStrToArray_mine($array)
{
$new_array=array();
foreach($arrayas$value)
{
$value=(string)$value;
$len=strlen($value);
for($i=0;$i
array_push($new_array,$value{$i});
}
}
return$new_array;
}
测试了一下,还是可以执行的,如下调用:
复制代码代码如下:
//测试数组
$data=array(12,43,87,45,98,74,83,67,12);
var_dump(splitStrToArray_mine($data));
输出结果为:
复制代码代码如下:
array(18){
[0]=>
string(1)"1"
[1]=>
string(1)"2"
[2]=>
string(1)"4"
[3]=>
string(1)"3"
[4]=>
string(1)"8"
[5]=>
string(1)"7"
[6]=>
string(1)"4"
[7]=>
string(1)"5"
[8]=>
string(1)"9"
[9]=>
string(1)"8"
[10]=>
string(1)"7"
[11]=>
string(1)"4"
[12]=>
string(1)"8"
[13]=>
string(1)"3"
[14]=>
string(1)"6"
[15]=>
string(1)"7"
[16]=>
string(1)"1"
[17]=>
string(1)"2"
}
虽然执行的不错,但是看看标准答案就会让你大吃一惊的,函数中就一句话,如下:
复制代码代码如下:
//标准函数
functionsplitStrToArray($array)
{
returnstr_split(implode("",$array));
}
于是写了脚本来测试自己的和标准的函数的运行效率差距,里面有一个microtime_float()函数用来提供精确时间的支持:
复制代码代码如下:
//测量时间的函数
functionmicrotime_float()
{
list($usec,$sec)=explode("",microtime());
return((float)$usec+(float)$sec);
}
//自定义函数
functionsplitStrToArray_mine($array)
{
$new_array=array();
foreach($arrayas$value)
{
$value=(string)$value;
$len=strlen($value);
for($i=0;$i
array_push($new_array,$value{$i});
}
}
return$new_array;
}
//标准函数
functionsplitStrToArray($array)
{
returnstr_split(implode("",$array));
}
//测试数组
$data=array(12,43,87,45,98,74,83,67,12);
//开始测试
$mine_start=microtime_float();
splitStrToArray_mine($data);
$mine_end=microtime_float();
//标准函数调用
$sta_start=microtime_float();
splitStrToArray($data);
$sta_end=microtime_float();
echo"自己的函数调用运行时间为:".(float)($mine_end-$mine_start)."S
";
echo"标准的函数调用运行时间为:".(float)($sta_end-$sta_start)."S
";
$multiple=(int)((float)($mine_end-$mine_start)/(float)($sta_end-$sta_start));
echo"前者是后者的:".$multiple."倍!";
来看看输出结果:
自己的函数调用运行时间为:9.3936920166E-005S
标准的函数调用运行时间为:2.69412994385E-005S
前者是后者的:3倍!
多次刷新页面的话,可以发现标准函数的执行效率基本上是自己的函数的3倍!当然,标准的函数中使用了PHP的内置函数:str_split(),implode(),所以要比自己写函数快得多,对str_split()函数没有印象?来看看手册解释:
str_split--Convertastringtoanarray(将一个字符串转换成数组)
函数描述:
arraystr_split(stringstring[,intsplit_length])
复制代码代码如下:
Convertsastringtoanarray.Iftheoptionalsplit_lengthparameterisspecified,thereturnedarraywillbebrokendownintochunkswitheachbeingsplit_lengthinlength,otherwiseeachchunkwillbeonecharacterinlength.
FALSEisreturnedifsplit_lengthislessthan1.Ifthesplit_lengthlengthexceedsthelengthofstring,theentirestringisreturnedasthefirst(andonly)arrayelement.
例1.Exampleusesofstr_split()
复制代码代码如下:
$str="HelloFriend";
$arr1=str_split($str);
$arr2=str_split($str,3);
print_r($arr1);
print_r($arr2);
?>
Outputmaylooklike:
复制代码代码如下:
Array
(
[0]=>H
[1]=>e
[2]=>l
[3]=>l
[4]=>o
[5]=>
[6]=>F
[7]=>r
[8]=>i
[9]=>e
[10]=>n
[11]=>d
)
Array
(
[0]=>Hel
[1]=>lo
[2]=>Fri
[3]=>end
)
您可能感兴趣的文章:i++循环与i-–循环的执行效率(递增与递减效率)提高ASP页面执行效率的方法分析优化innerHTML操作(提高代码执行效率)根据mysql慢日志监控SQL语句执行效率JavaScript执行效率与性能提升方案查询mysql中执行效率低的sql语句的方法Oracle提高sql执行效率的心得建议分享50个提高PHP执行效率的技巧