我已经想了很多天,我有时会发现自己不得不使用PHP可用的 Type Juggling 方法:Type Juggling Manual
并且已经进入了效率/正确方法的主题。为了展示我认为的类似场景:
/*
The benchmark test:
Expected Output: string
Actual Output: string
*/
$Percentile = "20%";
echo gettype($Percentile);
?>
<br><br>
Force Casting to an Integer:
<br><br>
<?php
/*
Remove the %age from the string before force re-cast
Expected Output: integer
Actual Output: integer
Test Passed
*/
unset($Percentile); // Just to reduce any cached validations
$Percentile = "20%";
$Percentile = (int)$Percentile;
echo $Percentile."\r\n";
echo gettype($Percentile);
?>
<br><br>
Str Replace to remove the '%' and cast to integer
<br><br>
<?php
/*
Remove the %age from the string before force re-cast
Expected Output: integer
Actual Output: integer
Test Passed
*/
unset($Percentile);
$Percentile = "20%";
$Percentile_New = str_replace("%","",$Percentile);
echo $Percentile_New."\r\n"; //
echo gettype((int)$Percentile_New);
?>
阅读所有测试后,通过预期结果,但试图强制;
$Percentile = 20%;
返回错误:
解析错误:语法错误,意外';'
无论如何,创建百分比将使用字符串强制转换表示创建,但这不是问题的主要目的..
总体问题是哪种方式更有效?
方法1:
强制转换类型为整数而不删除%age
方法2:
使用str_replace
然后在删除%age
效率减少了不正确的数据广播类型的空间(如果可能出现此类问题)
答案 0 :(得分:0)
鉴于这个例子,它显然更有效,不做任何字符串操作,而是直接使用类型转换。给定字符串的结果是相同的。