为什么我们在函数结束时使用return而不返回任何值

时间:2016-09-29 08:20:27

标签: php function

我对return语句感到困惑,为什么我们需要在函数结尾使用return,例如

 function test($a){blah;
                   blahh ;
                   blahhh;
                  blahhhhh;
                    return;}

这里有什么用途?当所有语句执行时,函数自动终止,我认为这里没有返回,但http://www.w3resource.com/php/statement/return.php的这张图片让我感到困惑enter image description here

所以 有人可以解释使用return(当我们没有返回任何值时)。

4 个答案:

答案 0 :(得分:2)

这取决于你想要实现的目标。

  

如果你在几个地方写echo,你的代码就会变得混乱。通常,返回值的函数也更通用,因为调用者可以决定是否进一步操作该值或立即打印它。

我建议坚持惯例并使用return作为功能。

您应该查看GuardClause

示例:

function test() {
   return 10;
}

$a = test(); // $a stores the value 10

echo $a; // Prints 10
echo $a + 5; // We may want to manipulate the value returned by the function. So, it prints 15.

如需进一步参考,请查看What is the difference between PHP echo and PHP return in plain English?

答案 1 :(得分:1)

在这种情况下:你没有。

return突破了该函数,但由于它是该函数中的最后一个语句,所以如果没有该语句,你就会打破它。

return将其参数传递给调用者,但由于它没有参数,因此没有任何内容可以传递。

所以它什么也没做。

不要以为你偶然遇到的每一段代码都有一些瑕疵。它可能会从代码的早期版本中遗留下来,而其他东西(赋予它意义)已被删除。它可能是由某人的货物结果写的。它可能是未来发展的占位符。

答案 2 :(得分:1)

如果您希望函数返回值,那么它很有用。

Function FavouritePie($who) {

     switch($who) {
                 case 'John':
                    return 'apple';

                 case 'Peter':
                    return 'Rhubarb';
                  }
}

所以,考虑以下因素:

$WhatPie = FavouritePie('John');

echo $WhatPie;

会给 apple

以一种非常简单的形式,如果你想要一个函数返回一些东西,即处理它并传回一些东西,那么它很有用。没有回报,你只是在执行一个死路的功能。

进一步阅读: http://php.net/manual/en/function.return.php

http://php.net/manual/en/functions.returning-values.php

要添加一些特定于答案的进一步上下文,如果问题归结为"我是否需要为此添加return,在函数结束时,那么答案没有。但这并不意味着正确的答案始终是遗漏您的return

这取决于您对$a的要求。

如果您在函数中echo $a,该函数将在调用后立即吐出$a。如果您return $a,假设您将test的调用设置为变量(即$something = $test('foo')),那么您可以稍后再使用它。

答案 3 :(得分:1)

"返回"当您打算从其他代码调用此函数时,这很重要,它可以帮助您:

  1. 知道该功能是否正常工作。
  2. 从函数中获取值。
  3. 确保返回后不执行其他代码。
  4. 当代码作为样本简单时,它可能毫无用处,让它变得更复杂。

    function test($a){
        if(file_exists($a)){
            if(is_file($a)){
                return $a." IS A FILE\n";
            } else if(is_dir($a)) {
                return $a." IS A DIR\n";
            } else {
                return $a." EXISTS, BUT I DONT KNOW WHAT IT IS\n"
            }
        } else {
            return $a." NOT EXISTS\n";
        }
        return 0;
    }
    
    
    $filecheck = test("/abc/def.txt");
    if($filecheck){
        echo $filecheck;
    } else {
        echo "unknown error";
    }
    

    上面显示了如何返回值,并进行一些基本处理。 在函数中实现返回总是很好,因此您甚至可以为函数指定错误代码以供参考。

    根据您的示例,我将稍微修改如下:

    function test($a){
        blah;
        blahh;
        blahhh;
        blahhhhh;
        return 1;
    }
    

    所以我知道代码正在运行到最后一行。 否则该功能只是默默地完成。