Casttype效率

时间:2013-11-11 20:28:19

标签: php casting

我已经想了很多天,我有时会发现自己不得不使用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

后强制转换类型为整数

效率减少了不正确的数据广播类型的空间(如果可能出现此类问题)

1 个答案:

答案 0 :(得分:0)

鉴于这个例子,它显然更有效,不做任何字符串操作,而是直接使用类型转换。给定字符串的结果是相同的。