何时返回PHP中的值?

fab*_*rik 1 php performance dry return-value

鉴于这种丑陋的方法:

public function convert_cell_value( $val, $type )
{
    if($type == 'String')
    {
        return $val;
    }
    elseif($type == 'Number')
    {
        if($val - intval($val) > 0)
        {
            return $val;
        }
        else
        {
            return intval($val);
        }
    }
    else
    {
        return $val;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我的100亿美元的问题是:当我应该返回值(不是在这种方法中,而是任何其他类似的这样)来应用DRY原则并追求性能.或者:我对性能的想法出了问题,当我立即返回某些值时,它与它没有任何关系?

额外的问题:是否有更简单的技巧来获得小数?

if($val - intval($val) > 0)
{
    return $val;
}
Run Code Online (Sandbox Code Playgroud)

感谢您宝贵的时间,fabrik

Gum*_*mbo 6

您可以将方法逻辑简化为:

public function convert_cell_value( $val, $type )
{
    if ($type === 'Number' && ($ret = intval($val)) == $val) {
        return $ret;
    }
    return $val;
}
Run Code Online (Sandbox Code Playgroud)

或者,如果要添加更多类型,请使用switch:

public function convert_cell_value( $val, $type )
{
    switch ($type) {
    case 'Number':
        if (($ret = intval($val)) == $val) {
            return $ret;
        }
    case 'String':
    default:
        return $val;
    }
}
Run Code Online (Sandbox Code Playgroud)

你也可以只使用一个return和更换return $ret$val = $ret返回正确的价值.