functionmicrotime_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
{$str= 'abcd_efgh_igk_lmn';
convertUnderline1($str);
}$e1 =microtime_float();echo 'convertUnderline1: run time = ';echo $e1-$s1;
echo '
';//第2种方式调用10w次所需时间
$s2 =microtime_float();for ($i=0;$i
{$str= 'abcd_efgh_igk_lmn';
convertUnderline2($str);
}$e2 =microtime_float();echo 'convertUnderline2: run time = ';echo $e2-$s2;
echo '
';//第3种方式调用10w次所需时间
$s2 =microtime_float();for ($i=0;$i
{$str= 'abcd_efgh_igk_lmn';
convertUnderline3($str);
}$e2 =microtime_float();echo 'convertUnderline3: run time = ';echo $e2-$s2;
echo '
';//第4种方式调用10w次所需时间
$s2 =microtime_float();for ($i=0;$i
{$str= 'abcd_efgh_igk_lmn';
convertUnderline4($str);
}$e2 =microtime_float();echo 'convertUnderline4: run time = ';echo $e2-$s2;
echo '
';//第5种方式调用10w次所需时间
$s2 =microtime_float();for ($i=0;$i
{$str= 'abcd_efgh_igk_lmn';
convertUnderline4($str);
}$e2 =microtime_float();echo 'convertUnderline5: run time = ';echo $e2-$s2;
echo '
';
为什么我要写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里也是,数组连接要比字符串连接块。