用简单的英语将PHP echo和PHP返回有什么区别?

Joe*_*les 40 php return function echo

是的,我用谷歌搜索了这个问题,甚至提到了我的教科书(由Don Gosselin撰写的PHP),但我似乎无法理解这个解释.

根据我的理解:

echo =显示函数的最终结果

return =返回函数的值

我应用了两者echo并且return在以下函数中我看不到使用的差异或"有效性" return而不是echo.

<?php
echo "<h1 style='font-family:Helvetica; color:red'>Using <em>echo</em></h1>";
function add1($x, $y){
    $total = $x + $y;
    echo $total;
}
echo "<p>2 + 2 = ", add1(2, 2), "</p>";

echo "<h1 style='font-family:Helvetica; color:red'>Using <em>return</em></h1>";
function add2($x, $y){
    $total = $x + $y;
    return $total;
}
echo "<p>2 + 2 = ", add2(2, 2), "</p>";

?>
Run Code Online (Sandbox Code Playgroud)

两者都显示结果!我不明白的是什么?

jpr*_*itt 110

我将在这个问题上给出一个完全非技术性的答案.

假设有一个叫Sally Function的女孩.你想知道她是否喜欢你.因此,既然你在小学,你决定给Sally一个音符(用参数调用函数),询问她是否喜欢你.现在你打算做的就是问她这个,然后告诉大家她告诉你什么.相反,你问她,然后告诉所有人.这相当于返回(你获取信息并用它做某事)与她的回声(告诉所有人,而你没有任何控制).

在你的情况下,正在发生的事情是,当莎莉,echo她正在接受你的控制并说"我现在要告诉别人这个",而不是你能够接受她的回应并做你想做的事情. .然而,最终的结果是,你是在同时告诉别人,因为你回应了她已经回应但却没有回复的东西(在告诉你的班级她是否喜欢你的时候,她会把你切断)

  • 考虑一下你是否想要将结果保存在变量中,以便以后可以使用它.如果你的函数`echo`s而不是`return`ing,你实际上并没有得到任何保存在变量中的东西. (20认同)

Mat*_*sen 44

考虑以下:

<?php
function sayHelloLater(){
    return "Hello";
}

function sayGoodbyeNow(){
    echo "Goodbye";
}

$hello = sayHelloLater(); // "Hello" returned and stored in $hello 
$goodbye = sayGoodbyeNow(); // "Goodbye" is echo'ed and nothing is returned

echo $hello; // "Hello" is echo'ed
echo $goodbye; // nothing is echo'ed
?>
Run Code Online (Sandbox Code Playgroud)

您可能希望输出为:

HelloGoodbye
Run Code Online (Sandbox Code Playgroud)

实际输出是:

GoodbyeHello
Run Code Online (Sandbox Code Playgroud)

原因是,只要调用该函数,"Goodbye"就会作为输出进行回显(写入).另一方面,"Hello"返回$hello变量.在$goodbye实际上是空的,因为再见功能不返回任何东西.


Bad*_*sie 23

我发现你发表评论仍然表明你感到困惑,因为你不了解代码的流程.也许这会对你有所帮助(特别是对Mathias R. Jessen的回答).

所以再次使用这两个函数:

function sayHelloLater() {
    return 'Hello';
}

function sayGoodbyeNow() {
    echo 'Goodbye';
}
Run Code Online (Sandbox Code Playgroud)

现在,如果你这样做:

$hello = sayHelloLater();
$goodbye = sayGoodbyeNow();

echo $hello;
echo $goodbye;
Run Code Online (Sandbox Code Playgroud)

你将在屏幕上留下'GoodbyeHello'.

这就是原因.代码将像这样运行:

$hello = sayHelloLater();  ---->-------->-------->------->------>--
                                                                  ¦
  ¦           ^                                                   ¦
  ¦           ¦                                           Call the function
  v           ¦                                                   ¦
  ¦           ^                                                   ¦
  ¦           ¦                                                   v
  ¦
  v         "return" simply sends back                 function sayHelloLater() {
  ¦          'Hello' to wherever the     <----<----        return 'Hello';
  ¦             function was called.                   }
  v           Nothing was printed out
  ¦          (echoed) to the screen yet.
  ¦
  v

$hello variable now has whatever value
the sayHelloLater() function returned,
so $hello = 'Hello', and is stored for
whenever you want to use it.

  ¦
  ¦
  v
  ¦
  ¦
  v

$goodbye = sayGoodbyeNow();  ---->-------->-------->------->------
                                                                 ¦
  ¦              ^                                               ¦
  ¦              ¦                                       Call the function
  v              ¦                                               ¦
  ¦              ^                                               ¦
  ¦              ¦                                               v
  ¦              ¦
  v              ¦                                    function sayGoodbyeNow() {
  ¦                                                       echo 'Goodbye';
  ¦        The function didn't return                 }
  ¦        anything, but it already
  v         printed out 'Goodbye'                                ¦
  ¦                                                              v
  ¦           ^
  ¦           ¦                                    "echo" actually prints out
  v           <-----------<-----------<---------     the word 'Goodbye' to
  ¦                                                 the page immediately at
  ¦                                                       this point.
  ¦
  v

Because the function sayGoodbyeNow() didn't
return anything, the $goodbye variable has
a value of nothing (null) as well.

  ¦
  ¦
  ¦
  v
  ¦
  ¦
  ¦
  v

echo $hello;  -------->------->   Prints 'Hello' to the screen at
                                  this point. So now your screen says
  ¦                               'GoodbyeHello' because 'Goodbye' was
  ¦                               already echoed earlier when you called
  ¦                               the sayGoodbyeNow() function.
  v

echo $goodbye;  ------>------->   This variable is null, remember? So it
                                  echoes nothing.
  ¦
  ¦
  ¦
  v

And now your code is finished and you're left with
'GoodbyeHello' on your screen, even though you echoed
$hello first, then $goodbye.
Run Code Online (Sandbox Code Playgroud)


Aro*_*olm 6

return函数本身可以治疗有点像一个变量.

所以

return add1(2, 3) + add1(10, 10);
Run Code Online (Sandbox Code Playgroud)

将输出:

25
Run Code Online (Sandbox Code Playgroud)

echo add2(2, 3) + add2(10, 10);
Run Code Online (Sandbox Code Playgroud)

将输出:

5
20
0
Run Code Online (Sandbox Code Playgroud)

因为没有resultadd2.它的作用只是回应出来的东西.永远不会将值实际返回给调用它的代码.

顺便说一下,你不是傻瓜.你只是一个初学者.我们在开始时都是初学者,并且在开始时你需要克服一定的门槛.你可能会在开始时遇到很多"愚蠢"的问题,但只要继续尝试,最重要的是实验,你就会学到.


小智 5

函数响应之间的区别在于“echo”向浏览器(DOM)发送一些东西,而“return”向调用者返回一些东西。

function myFunction(
    return 5;
}

$myVar= myFunction(); //myVar equals 5
echo $myVar; // will show a "5 " on the screen


function myFunction() {
    echo 5;
}

$myVar= myFunction(); // myVar equals 0, but the screen gets a "5"
echo $myVar; // a zero on the screen next to "5" printed by function appears .
Run Code Online (Sandbox Code Playgroud)


小智 5

所以,基本上你想要在浏览器输出内容时使用echo,并在想要结束脚本或函数时使用return,并将数据传递给脚本的另一部分.