<?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 />'
;