<?php
//微秒时间
function microtime_float()
{list($usec, $sec) = explode(" ", microtime());return ((float)$usec + (float)$sec);
}//将下划线命名转换为驼峰式命名
function convertUnderline1 ( $str , $ucfirst = true)
{while(($pos = strpos($str , '_'))!==false)$str = substr($str , 0 , $pos).ucfirst(substr($str , $pos+1));return $ucfirst ? ucfirst($str) : $str;
}//将下划线命名转换为驼峰式命名
function convertUnderline2 ( $str , $ucfirst = true)
{$str = explode('_' , $str);foreach($str as $key=>$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<$counts;$i++)
{$str= 'abcd_efgh_igk_lmn';convertUnderline1($str);
}
$e1 = microtime_float();
echo 'convertUnderline1: run time = ';
echo $e1-$s1;echo '<br />';//第2种方式调用10w次所需时间
$s2 = microtime_float();
for ($i=0;$i<$counts;$i++)
{$str= 'abcd_efgh_igk_lmn';convertUnderline2($str);
}
$e2 = microtime_float();
echo 'convertUnderline2: run time = ';
echo $e2-$s2;echo '<br />';//第3种方式调用10w次所需时间
$s2 = microtime_float();
for ($i=0;$i<$counts;$i++)
{$str= 'abcd_efgh_igk_lmn';convertUnderline3($str);
}
$e2 = microtime_float();
echo 'convertUnderline3: run time = ';
echo $e2-$s2;echo '<br />';//第4种方式调用10w次所需时间
$s2 = microtime_float();
for ($i=0;$i<$counts;$i++)
{$str= 'abcd_efgh_igk_lmn';convertUnderline4($str);
}
$e2 = microtime_float();
echo 'convertUnderline4: run time = ';
echo $e2-$s2;echo '<br />';//第5种方式调用10w次所需时间
$s2 = microtime_float();
for ($i=0;$i<$counts;$i++)
{$str= 'abcd_efgh_igk_lmn';convertUnderline4($str);
}
$e2 = microtime_float();
echo 'convertUnderline5: run time = ';
echo $e2-$s2;echo '<br />';

为什么我要写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里也是,数组连接要比字符串连接块。

转载于:https://www.cnblogs.com/impeller/p/8570490.html

PHP把下划线分隔命名的字符串 转换成驼峰式命名方式相关推荐

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

    $val) $str[$key] = ucfirst($val); if(!$ucfirst) $str[0] = strtolower($str[0]); return implode('' , $ ...

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

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

  3. php函数用竖线隔开,用指定的分隔符号把字符串转换成数组《 PHP 基础 》

    现在我这里有一个字符串 ... 就是这个 $tracks ... 它的值是用竖线分隔开的一些文字 ... 使用 explode 函数 ... 我们可以使用竖线作为分隔符,把这个字符串转换成一个数组. ...

  4. 如何将 kitten编程猫里的以分号分隔的长字符串转换成列表结构

    积木设计: 全部变量值: 注意,kitten编程猫里的列表索引从 1 开始,但是运行时转换成 JavaScript 代码里,索引仍然是从0开始的: var 所有成语 = '塞翁之马;塞翁失马;盂方水方 ...

  5. JavaScript实现字符串转换成驼峰表示法

    举例:已知有字符串foo="get-element-by-id",写一个function将其转化成驼峰表示法"getElementById". <scri ...

  6. 字符串转换成json对象的方式

    前言 使用ajax的开发项目过程中,经常需要将json格式的字符串返回到前端,前端解析成js对象(JSON ). 欲将以下字符串转为json对象格式: var str = '{name:"j ...

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

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

  8. 24.shell中list详解,定义list,获取List的总个数,获取list的某个元素值,将list的每个元素转换成以空格分隔的字符串,空格分隔的字符串转换成list,for循环list

    文章目录 前言 定义list 获取List的总个数 获取list的某个元素值 将list的每个元素转换成以空格分隔的字符串 空格分隔的字符串转换成list for循环list 总结 友情链接 前言 s ...

  9. java 数据库 字段名 转_Java正则表达式实现表字段名和驼峰式命名转换

    Java正则表达式实现表字段名和驼峰式命名转换 在开发过程中,数据表中的字段名我们通常以"_"分隔(如:user_name),而在Java的实体类中我们的字段属性通常采用驼峰式命名 ...

最新文章

  1. Android系统如何管理自己内存的?
  2. 清华伯克利造出机械小强:承重200万倍踩不死,跑得和真蟑螂一样快
  3. (转载)Android GradientDrawable(shape标签定义) 静态使用和动态使用(圆角,渐变实现)
  4. ASP.NET 框架 之HttpHandler
  5. 广东省老龄化预测及影响因素分析
  6. 20201125 《计算感知》武老师 第1节课 笔记
  7. python 机器学习 爬取关键字_5行Python就能爬取 3000+ 上市公司的信息?
  8. bugku-杂项 听首音乐
  9. intellij从git上拉取maven项目详细步骤
  10. 力扣算法001_两数之和
  11. mac下 如果docker 如果访问不到网 就下载哥docker-machine 然后进入到vbox下进行操作
  12. rs232接口定义_RS485通讯接口定义和特点
  13. 【高级编程技术作业】第六周
  14. Caused by: java.lang.NoSuchMethodException: init [class android.content.Context, interface andr解决
  15. 安卓软件汉化教程附带汉化工具Android Res Edit V1.5
  16. win7系统如何一键清理系统垃圾【系统天地】
  17. 最强的手机文件管理器!
  18. 【单镜头反光相机】弥散圆、焦平面、景深、光圈
  19. 最新江苏安全员B考试判断练习题库
  20. 社区版pycharm官网下载安装教程

热门文章

  1. 总结:C#中跨窗体传值的几种方法
  2. 移远NB-IOT BC28模块模组简介和实际应用方向详解
  3. STM32串口使用详解
  4. 几篇JVM实战的东西
  5. Zabbix 4.2 发布:支持Prometheus数据收集,可扩展性大大提升
  6. 一张图说明Linux启动过程
  7. 基于HTML5的WebGL结合Box2DJS物理引擎应用
  8. 纯CSS实现垂直居中的几种方法
  9. 如何把Word里的公式放到PowerPoint里
  10. 15 个最佳的 jQuery 表格插件