日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

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

發布時間:2025/5/22 php 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP把下划线分隔命名的字符串 转换成驼峰式命名方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<?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把下划线分隔命名的字符串 转换成驼峰式命名方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。