$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. 英特尔王锐:软硬件并驾齐驱,开发者是真英雄
  2. Oracle 用数据泵导入导出数据
  3. itext 添加空格_借助 iText 用代码在 PDF 中创建空白签名域
  4. methodhandle_概览Java 7 MethodHandle及其用法
  5. 倒排索引、分词、同义词
  6. mysql 去重复屈居_mysql去重复关键字distinct的用法
  7. Oracle 20c 新特性:表达式参数值 Expressions Parameter Values
  8. 发力金融市场,中兴通讯有何硬实力?
  9. xp和win7右键新建选项排序
  10. 使用Cisco Packet Tracer进行网络模拟
  11. Modelsim下载安装【Verilog】
  12. 通用即插即用监视器驱动下载_驱动之家和驱动精灵哪个好
  13. 一文讲懂什么是vlan、三层交换机、网关、DNS、子网掩码、MAC地址
  14. 跟我一起走进内联汇编的世界
  15. 哪些股票自动交易接口好用呢?
  16. python counter怎么用_Counter的基本用法
  17. flutter小控件备忘
  18. 【办公自动化Excel】开发工具的使用
  19. 小学生html教程,小学.html
  20. 520,都来被虐吧。。。

热门文章

  1. barrett hand
  2. 同济大学博导陈明:解读中国制造2025
  3. 2021年3月15日:螺纹/橡胶合约 策略体验日记
  4. 五子棋爱好者必看!专业五子棋级位段位资格评定标准
  5. python对矩阵进行(-1/2)方
  6. [音乐] 《犬夜叉》主题曲 Misses beyond time - 穿越时空的思念
  7. vue3过渡和动画详解
  8. 三分迷糊,十分精明”── 认清股价的涨跌趋势才能成为股市高手
  9. NoSQLBooster for MongoDB延长-试用期
  10. Xenserver上连接NFS服务器时RPC:portmapperfailure;PRC:Unable to recieve