0

几天来我一直在想这件事,有时我发现自己不得不使用 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_replacethen 强制转换类型为整数

效率降低了不正确的数据转换类型的空间(如果可能发生这样的问题)

4

1 回答 1

0

鉴于该示例,显然不执行任何字符串操作,而是直接使用类型转换更有效。给定字符串的结果是相同的。

于 2013-11-11T21:47:23.617 回答