就是把原来的数组中的数都“拆”成“单”位的。

下面是自己写的一个函数:

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;

}

测试了一下,还是可以执行的,如下调用:

//测试数组

$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"

}

虽然执行的不错,但是看看标准答案就会让你大吃一惊的,函数中就一句话,如下:

//标准函数

function splitstrtoarray($array)

{

return str_split(implode("", $array));

}

于是写了脚本来测试自己的和标准的函数的运行效率差距,里面有一个 microtime_float() 函数用来提供精确时间的支持:

//测量时间的函数

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, 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-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] )

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()

$str = "hello friend";

$arr1 = str_split($str);

$arr2 = str_split($str, 3);

print_r($arr1);

print_r($arr2);

?>

output may look like:

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

)

希望与广大网友互动??

点此进行留言吧!

php 执行效率,PHP 函数执行效率的小比较相关推荐

  1. js 中断函数执行_javascript 终止函数执行操作

    1.如果终止一个函数的用return即可,实例如下: function testA(){ alert('a'); alert('b'); alert('c'); } testA(); 程序执行会依次弹 ...

  2. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )

    文章目录 前言 一.等待远程进程 mmap 函数执行完毕 二.从寄存器中获取进程返回值 三.博客资源 前言 前置博客 : [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | ...

  3. mysql的执行效率_数据库执行效率的对比测试

    今天看了一篇很有意思的文章,对比数据库和普通编程语言的效率测试, 测试的语言分别是mysql的存储过程,oracle plsql和perl. 测试机器是同一台机器上,测试标准是计算100万次的cos函 ...

  4. python 如何判断一个函数执行完成_Python核心编程的四大神兽迭代器、生成器 、闭包以及装饰器...

    本文将主要分为4大部分,分别介绍Python核心编程中的迭代器.生成器 .闭包以及装饰器. 生成器 生成器是生成一个值的特殊函数,它具有这样的特点:第一次执行该函数时,先从头按顺序执行,在碰到yiel ...

  5. 【译】理解Javascript函数执行—调用栈、事件循环、任务等

    原文作者:Gaurav Pandvia 原文链接:medium.com/@gaurav.pan- 文中部分链接可能需要梯子. 欢迎批评指正. 现如今,web开发者(我们更喜欢被叫做前端工程师)用一门脚 ...

  6. python使用statsmodels包中的adfuller函数执行增强迪基-福勒检验(ADF检验、augmented Dickey-Fuller test)、判断时间序列数据是否平稳

    python使用statsmodels包中的adfuller函数执行增强迪基-福勒检验(ADF检验.augmented Dickey-Fuller test).判断时间序列数据是否平稳(station ...

  7. Javascript函数执行、new机制以及继承

    JS函数执行 一个JavaScript函数fn,被执行有三种途径: fn() new fn() fn.call()或fn.apply() new机制以及继承 JavaScript中定义了一种对象,称之 ...

  8. python3 设置函数执行超时 eventlet模块

    实际项目中会涉及到需要对有些函数的响应时间做一些限制,如果超时就退出函数的执行,停止等待. 可以利用python中的装饰器实现对函数执行时间的控制. python装饰器简单来说可以在不改变某个函数内部 ...

  9. python装饰器函数-python 装饰器 函数被装饰+函数执行

    """ func1.py 文件 1.执行到@w1 2.被装饰函数作为装饰器参数 w1(func=f1()) 3.w1 函数执行有返回值,得用变量接收,变量名为f1 合适 ...

最新文章

  1. java中的main的介绍_Java中的main函数详细讲解
  2. python pandas缺失值处理_Pandas之缺失值处理
  3. java drawingpanel_Java DrawingPanel.getHeight方法代码示例
  4. MySQL查询冗余索引和未使用过的索引
  5. C++学习系列笔记(三)
  6. OpenShift 4 - 提权运行容器
  7. CIO必看:跨国集团采购部报表系统的建设经验分享
  8. html 给一个无限宽,html – CSS div与其内容一样宽
  9. 三角波fft的c语言程序设计,dsp的fft实现设计报告.docx
  10. 项目管理——项目汇报总结
  11. 树莓派4使用CSI摄像头
  12. Codeforces 273D Dima and Figure
  13. 烂在肚子里的救命知识!看看吧!
  14. ORACLE OGG同步时更新分区字段值的问题
  15. 论一个X倒下了千千万万个X站起来了
  16. 基于CSS盒模型的页面布局
  17. 全志H616开发板Orange Pi Zero2连接香橙派5寸TFT液晶屏的测试说明
  18. EPI——部分笔记 + 资源无偿分享(百度网盘)~
  19. 服务器2003蓝屏A5修复,win7蓝屏0x000000a5的原因及对应的解决方法
  20. 2010年微软补丁总结

热门文章

  1. TensorFlow 资源汇集
  2. 6.2 K-Means 算法步骤-机器学习笔记-斯坦福吴恩达教授
  3. python基础4(来自廖雪峰的官方网站)
  4. Linux系统调用-- mount/umount函数详解
  5. 【PC工具】更新文字转语音、文字文本朗读工具,语音朗读软件,TTS语音合成...
  6. 使用Python增加csdn的访问量
  7. mysql 面试知识点笔记(二)查询优化及索引越多越好吗?
  8. AWS Elastic Block Store和Simple Storage Services区别
  9. 开发利器_Pigar.快速为Python项目生成依赖文件requirements.txt?
  10. Java_JDBC_MySql