几天来我一直在想这件事,有时我发现自己不得不使用 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%;
返回错误:
解析错误:语法错误,意外的 ';'
所以无论如何,将使用字符串转换表示创建百分比,但这不是问题的主要目的..
总体问题是哪种方式更有效?
方法一:
在不删除 %age 的情况下强制将类型转换为整数
方法二:
删除 %age 后使用str_replace
then 强制转换类型为整数
效率降低了不正确的数据转换类型的空间(如果可能发生这样的问题)