就是把原来的数组中的数都“拆”成“单”位的。 下面是自己写的一个函数: <div class="codetitle"><a style="CURSOR: pointer" data="88959" class="copybut" id="copybut88959" onclick="doCopy('code88959')"> 代码如下:<div class="codebody" id="code88959"> function splitStrToArray_mine($array) { $new_array = array(); foreach($array as $value) { $value = (string)$value; $len = strlen($value); for($i = 0; $i < $len; $i ++){ array_push($new_array,$value{$i}); } } return $new_array; } 测试了一下,还是可以执行的,如下调用: <div class="codetitle"><a style="CURSOR: pointer" data="80673" class="copybut" id="copybut80673" onclick="doCopy('code80673')"> 代码如下:<div class="codebody" id="code80673"> //测试数组 $data = array(12,43,87,45,98,74,83,67,12); var_dump(splitStrToArray_mine($data)); 输出结果为: <div class="codetitle"><a style="CURSOR: pointer" data="58647" class="copybut" id="copybut58647" onclick="doCopy('code58647')"> 代码如下:<div class="codebody" id="code58647"> 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" } 虽然执行的不错,但是看看标准答案就会让你大吃一惊的,函数中就一句话,如下: <div class="codetitle"><a style="CURSOR: pointer" data="98168" class="copybut" id="copybut98168" onclick="doCopy('code98168')"> 代码如下:<div class="codebody" id="code98168"> //标准函数 function splitStrToArray($array) { return str_split(implode("",$array)); } 于是写了脚本来测试自己的和标准的函数的运行效率差距,里面有一个 microtime_float() 函数用来提供精确时间的支持: <div class="codetitle"><a style="CURSOR: pointer" data="79605" class="copybut" id="copybut79605" onclick="doCopy('code79605')"> 代码如下:<div class="codebody" id="code79605"> //测量时间的函数 function microtime_float() { list($usec,$sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } //自定义函数 function splitStrToArray_mine($array) { $new_array = array(); foreach($array as $value) { $value = (string)$value; $len = strlen($value); for($i = 0; $i < $len; $i ++){ array_push($new_array,$value{$i}); } } return $new_array; } //标准函数 function splitStrToArray($array) { return str_split(implode("",$array)); } //测试数组 $data = array(12,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-005 S 标准的函数调用运行时间为:2.69412994385E-005 S 前者是后者的:3 倍! 多次刷新页面的话,可以发现标准函数的执行效率基本上是自己的函数的 3 倍!当然,标准的函数中使用了 PHP 的内置函数: str_split(),implode(),所以要比自己写函数快得多,对 str_split() 函数没有印象?来看看手册解释: str_split -- Convert a string to an array(将一个字符串转换成数组)
函数描述:
array str_split ( string string [,int split_length] ) <div class="codetitle"><a style="CURSOR: pointer" data="61852" class="copybut" id="copybut61852" onclick="doCopy('code61852')"> 代码如下:<div class="codebody" id="code61852"> Converts a string to an array. If the optional split_length parameter is specified,the returned array will be broken down into chunks with each being split_length in length,otherwise each chunk will be one character in length. FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string,the entire string is returned as the first (and only) array element. 例 1. Example uses of str_split() <div class="codetitle"><a style="CURSOR: pointer" data="88555" class="copybut" id="copybut88555" onclick="doCopy('code88555')"> 代码如下:<div class="codebody" id="code88555"> <?php $str = "Hello Friend"; $arr1 = str_split($str); $arr2 = str_split($str,3); print_r($arr1); print_r($arr2); ?> Output may look like: <div class="codetitle"><a style="CURSOR: pointer" data="8445" class="copybut" id="copybut8445" onclick="doCopy('code8445')"> 代码如下:<div class="codebody" id="code8445"> 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 )
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|