$val) $str[$key] = ucfirst($val); if(!$ucfirst) $str[0] = strtolower($str[0]); return implode('' , $str);}//将下划线命名转换为驼峰式命名function convertUnderline3 ( $str , $ucfirst = true){ $str = ucwords(str_replace('_', ' ', $str)); $str = str_replace(' ','',lcfirst($str)); return $ucfirst ? ucfirst($str) : $str;}//将下划线命名转换为驼峰式命名function convertUnderline4 ( $str , $ucfirst = true){ $str = preg_replace('/_([A-Za-z])/e',"strtoupper('$1')",$str); return $ucfirst ? ucfirst($str) : $str;}//将下划线命名转换为驼峰式命名function convertUnderline5 ( $str , $ucfirst = true){ $str = preg_replace_callback('/([-_]+([a-z]{1}))/i',function($matches){ return strtoupper($matches[2]); },$str); return $ucfirst ? ucfirst($str) : $str;}$counts = 100000;//第1种方式调用10w次所需时间$s1 = microtime_float();for ($i=0;$i';//第2种方式调用10w次所需时间$s2 = microtime_float();for ($i=0;$i';//第3种方式调用10w次所需时间$s2 = microtime_float();for ($i=0;$i';//第4种方式调用10w次所需时间$s2 = microtime_float();for ($i=0;$i';//第5种方式调用10w次所需时间$s2 = microtime_float();for ($i=0;$i';

为什么我要写5个呢?不同的处理方式,我是想看看那个处理效率高。

经过测试发现,效率由高到低为 方法3>方法2>方法1>方法4>方法5 当然这是每个函数执行10w次才能看出的结果,当然1w次也能看出差别,1次就可以忽略不计了。

下面是测试结果:

执行1K次:

convertUnderline1: run time = 0.005000114440918

convertUnderline2: run time = 0.0040009021759033

convertUnderline3: run time = 0.0039999485015869

convertUnderline4: run time = 0.014001131057739

convertUnderline5: run time = 0.01600193977356

执行1w次:

convertUnderline1: run time = 0.056005954742432

convertUnderline2: run time = 0.033003091812134

convertUnderline3: run time = 0.028002977371216

convertUnderline4: run time = 0.14401507377625

convertUnderline5: run time = 0.13701295852661

执行10w次:

convertUnderline1: run time = 0.44704508781433

convertUnderline2: run time = 0.32203197479248

convertUnderline3: run time = 0.2670259475708

convertUnderline4: run time = 1.3601360321045

convertUnderline5: run time = 1.3231329917908

为什么字符串截取拼接要比数组连接慢呢?如果你看过PHP C的底层你就会明白了。所以以后如果有大量的字符串需要连接成一个字符串的 不要在用点连接了,放在一个数组后使用implode连接。

还有一个要说的,这样的方法同样在JS里也是,数组连接要比字符串连接块。

前面3个方法是我想出来的,后面的正则抄袭可爱的网友们的,不过我也是挺佩服的,算是温习了一下正则。

相关文章

相关视频

php 下划线转大写开头,使用PHP把下划线分隔定名的字符串 转换成驼峰式命名方式 , 把下划线后面的第一个字母变成大写...相关推荐

  1. php 下划线转大写开头,使用PHP把下划线分隔命名的字符串 转换成驼峰式命名方式 , 把下划线后面的第一个字母变成大写...

    最近项目使用symfony框架,这个框架对数据库的操作在这个团队里使用的是ORM进行操作,说实话使用ORM的开发效率和运行效率不一定高多少,到是它的实体命名和现有数据库字段的命名不太一样,ORM实体属 ...

  2. PHP把下划线分隔命名的字符串 转换成驼峰式命名方式

    <?php //微秒时间 function microtime_float() {list($usec, $sec) = explode(" ", microtime()); ...

  3. 匈牙利命名法、驼峰式命名法、帕斯卡命名法、下划线命名法

    1.匈牙利命名:开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写.For example: int iMyAge; "i"是int类型的缩写: c ...

  4. mfc编程淘汰了吗_四种基本的编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法、下划线命名法)...

    匈牙利命名法 匈牙利命名法是早期的规范,由微软的一个匈牙利人发明的,是 IDE 还十分智障的年代的产物.那个年代,当代码量很多的时候,想要确定一个变量的类型是很麻烦的,不像现在 IDE 都会给提示,所 ...

  5. springboot mybatis plus 关闭驼峰式命名转换为下划线

    springboot mybatis plus 关闭驼峰式命名转换为下划线 报错信息是这样的: org.springframework.jdbc.BadSqlGrammarException: ### ...

  6. idea 下划线字段转驼峰_Java如何实现数据库中表字段的下划线和驼峰式命名的Model相互转换,很方便的...-Go语言中文社区...

    其实通过逆向工程,然后去配置一些config,就可以实现,从Table到Model的相互转换,而且,对于下划线命名的Table字段,实现驼峰式命名的Model ,有时候我们只是做个测试,或者自己基于数 ...

  7. 将字符串转换成大写字母

    将字符串转换成大写字母 TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了 ...

  8. 用windows系统下的DOS命令将腾讯视频客户端下载的qlv文件转换成MP4格式(图文详解)

    用windows系统下的DOS命令将腾讯视频客户端下载的qlv文件转换成MP4格式(图文详解) 前言 原理 工具 步骤 延伸 博主联系方式 前言 本人喜欢收集各种优秀的视频,但是很多情况下我们看到的视 ...

  9. C语言中把小写字符串转换成大写用函数,一个容易的将小写字符串转换成大写的函数...

    一个简单的将小写字符串转换成大写的函数 我用的是VC++6.0,恳请大家帮忙看看到底哪里出错了. #include void uppers(char *Dest,char *Sour) { while ...

最新文章

  1. JOptionPane
  2. [Swift]NSString、NSData、Base64互转
  3. 杂七杂八(1)——如何查看本机的.NET Framework版本
  4. 我儿子现在读一年级,到现在读了3个月,这个是今天老婆叫我给他打印的英语卡片,晕啊...
  5. 计算机重应用,装了一大堆应用,iPhone6会变重吗?
  6. window系统对应默认IE浏览器版本
  7. 用hosts屏蔽不想打开的或者恶意的网站
  8. 在Ubuntu16.04下安装cmake 和cmake-gui
  9. 如何编写可移植的c/c++代码
  10. Microsoft caffe cifar实例编译之model的生成
  11. 助力社区防疫,百数提供了一款管理系统模板
  12. 解决 开发小程序时报错 Page ... has not been registered yet.
  13. Photoshopnbsp;CS4基础视频教程:通道与…
  14. 手机取证设备(手机点验设备、手机合规检测、双路并行手机取证深度分析系统、手机点验数据恢复)
  15. 【CTA系列】Kelly公式在最优f问题上的应用
  16. 打包签名用 文件配置遇到的坑(Keystore was tampered with, or password was incorrect)
  17. 众昂矿业:萤石因奇特的“荧光效应”而得名
  18. STL库:stack和queue
  19. ZYNQ学习之旅--PS_AXI_VDMA(利用VDMA实现将PS端的数据显示在PL端的HDMI上)
  20. 英语单词(持续更新)

热门文章

  1. 调用百度地图出现的自动创建完成对象会清空输入框值的问题
  2. 数据结构与算法 -- 树结构与图结构
  3. 《红楼梦》中人物词频统计
  4. 传输TCP/IP数据
  5. WIN11打不开虚拟机? 一招教你解决
  6. Java语言打印心型
  7. SpringBoot2使用Undertow来提高应用性能(spring-boot-starter-undertow)
  8. 采购申请审批策略增强
  9. js中获取元素的当前位置
  10. 【Vulnhub系列】DC1