0

我希望返回一个值为 50 或 25 的整数。这是执行此操作的正确方法还是应该创建一个变量$temp1=50$temp2=25返回该变量,而不仅仅是返回 50 和 25。

function somefunction($length)
{

    if ($length > 50) 
    {
        return 50;
    } else {
        return 25;
    }
}

对不起,如果重复,我看了。

4

6 回答 6

3

你这样做的方式非常好。将值分配给仅给return它的变量确实没有意义。
作为替代方案的更好版本,对于一些更复杂的情况,您最终需要返回一个变量,您可以只使用一个变量而不是您建议的两个变量。更像的东西

function somefunction($length)
{
    $myVar = 0;

    if ($length > 50) {
        $myVar = 50;
    } 
    else {
        $myVar = 25;
    }

    return $myVar;
}
于 2012-11-10T08:25:28.967 回答
3

之前没有必要分配变量。写吧

return ($length > 50 ? 50 : 25);
于 2012-11-10T08:27:01.540 回答
2

在返回之前分配给变量是没有意义的。您正在返回一个value50本身就是一个非常好的值,它不需要在返回之前分配给变量。

换句话说:你已经做对了。

于 2012-11-10T08:25:36.847 回答
0

这取决于你想做什么:

如果您只想返回一个常量,或者您想参数化这个常量。

在常量的情况下,为了便于阅读,您可以将它们命名为:

define('RETURN_CONSTANT_SUP',50);
define('RETURN_CONSTANT_INF',25);

function somefunction($length)
{

if ($length > RETURN_CONSTANT_SUP) 
{
    return RETURN_CONSTANT_SUP;
} else {
    return RETURN_CONSTANT_INF;
}
}

因此,您以正确的方式进行操作,如果有一天您想重用这些值,则可以使用常量。

于 2012-11-10T08:28:27.913 回答
0

我想说你的函数的问题不是返回而是输入。

无论如何,你的问题有点理论。因为返回常量整数值和变量都可以。它甚至不会有太大的不同。请参见以下示例:

function somefunction($length)
{
    return 25 + 25 * ($length > 50);
}

代码的问题在于您只为这些特定值编写了它。因此,不使用变量可能表明代码受到限制。但更少是因为回报,更多的是因为流量。

function integer_top_cut_drop($value, $top, $default)
{
    $value   = (int) $value;
    $top     = (int) $top;
    $default = (int) $default;

    if ($value > $top) 
    {
        return $top;
    }

    return $default;
}

正如这个函数所示,那里没有数字,只有变量。它几乎可以完成您现有功能的工作,但一切都是可变的。具有常量值的数字已被删除,现在作为参数传递:

function somefunction($length)
{
    return integer_top_cut_drop($length, 50, 25);
}

因此,您通常从不关心您是否返回变量、常量、其他类型的表达式或其他函数的返回值。

更重要的是,你的代码做了它必须做的事情,并且你以一种有用的方式去做。

这可能意味着在您的代码中您的功能已经完全正常。

但是请考虑您使自己可以重复使用公共部分,例如,如此处所示的具有新功能的部分。对于您的示例,这可能有点过分,但只是为了展示图片。

函数可以保留逻辑,因此您不需要多次编写该部分。它还使用该函数减少了代码其他部分的大小。

于 2012-11-10T09:19:49.673 回答
0

没有正确的方法可以做到这一点。

这个问题是关于风格和偏好的,你无法得到明确的答案。
只使用最喜欢的(当然,除非你在一个团队中工作,在这种情况下你应该适应团队的编码风格指南)。

于 2012-11-10T10:48:51.963 回答