복붙노트

PHP echo와 PHP return의 차이점은 무엇입니까?

PHP

PHP echo와 PHP return의 차이점은 무엇입니까?

예, 나는이 질문을 봤는데 심지어 내 교과서 (돈 Gosselin에 의해 PHP)하지만 난 심각하게 설명을 이해할 수없는 참조 할 수 있습니다.

내 이해에서 :

echo와 return을 다음 함수들에 적용했는데 차이점을 볼 수 없거나 echo 대신 return을 사용하는 '효과'가 적용되었습니다.

<?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>";

?>

둘 다 결과를 표시합니다! 나는 무엇을 이해하지 못합니까?

해결법

  1. ==============================

    1.나는 이것에 대해 완전히 기술적이지 않은 대답을 할 것입니다.

    나는 이것에 대해 완전히 기술적이지 않은 대답을 할 것입니다.

    Sally Function이라는 소녀가 있다고 가정 해 봅시다. 그녀가 당신을 좋아하는지 여부를 알고 싶습니다. 그래서 초등학교에 다니기 때문에 샐리는 그녀가 당신을 좋아하는지 아닌지를 묻는 메모 (매개 변수가있는 함수 호출)를 전달하기로 결정합니다. 이제 당신이 계획하고있는 것은 그녀에게 이것을 묻고 나서 그녀에게 당신이 말하는 것을 모든 사람에게 말하기입니다. 대신, 당신은 그녀에게 물어보고 그녀는 모든 사람에게 말한다. 이것은 그녀가 반향하는 것 (정보를 얻고 그것에 무언가를하는 것)을 반환하는 것과 같습니다 (당신이 통제하지 않고 모두에게 말함).

    당신의 경우에 일어나고있는 것은 샐리 에코가 그녀에게서 통제권을 빼앗아 서 "나는 지금 사람들에게이 사실을 말할 것"이라고 말하면서 당신이 그녀의 반응을 받아들이면서 그것을하고 싶었던 일을하는 대신 . 그러나 최종 결과는 자신이 이미 에코했지만 되돌려주지 않은 것을 반향하고 있기 때문에 동시에 사람들에게 말하고있는 것입니다 (그녀가 당신을 좋아하든 말든 당신의 반에서 당신을 털어 놓았습니다)

  2. ==============================

    2.다음을 고려하세요:

    다음을 고려하세요:

    <?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
    ?>
    

    결과물은 다음과 같습니다.

    HelloGoodbye
    

    실제 출력은 다음과 같습니다.

    GoodbyeHello
    

    그 이유는 "Goodbye"는 함수가 호출 되 자마자 출력으로 echo'ed (쓰여지는) 것입니다. 반면에 "Hello"는 $ hello 변수로 반환됩니다. 작별 인사 기능이 아무 것도 반환하지 않기 때문에 $ goodbye는 실제로 비어 있습니다.

  3. ==============================

    3.나는 당신이 코드의 흐름을 이해하지 못하기 때문에 당신이 혼란스러워하는 의견을 게시하고있는 것을 본다. 아마 이것은 당신을 도울 것입니다 (특히 Mathias R. Jessen의 대답을 통해).

    나는 당신이 코드의 흐름을 이해하지 못하기 때문에 당신이 혼란스러워하는 의견을 게시하고있는 것을 본다. 아마 이것은 당신을 도울 것입니다 (특히 Mathias R. Jessen의 대답을 통해).

    따라서이 두 가지 기능을 다시 수행하십시오.

    function sayHelloLater() {
        return 'Hello';
    }
    
    function sayGoodbyeNow() {
        echo 'Goodbye';
    }
    

    이제 이렇게하면 :

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

    화면에 '안녕히 계십시오'라는 메시지가 표시됩니다.

    이유가 여기 있습니다. 코드는 다음과 같이 실행됩니다.

    $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.
    
  4. ==============================

    4.return을 사용하면 함수 자체를 변수처럼 취급 할 수 있습니다.

    return을 사용하면 함수 자체를 변수처럼 취급 할 수 있습니다.

    그래서

    return add1(2, 3) + add1(10, 10);
    

    출력됩니다 :

    25
    

    동안

    echo add2(2, 3) + add2(10, 10);
    

    출력됩니다 :

    5
    20
    0
    

    add2 결과가 없습니다. 그게 무슨 소리 야. 실제로 코드를 호출 한 코드로 값을 반환하지 않습니다.

    Btw, 너 바보가 아니야. 당신은 초보자입니다. 우리는 처음에는 모두 초보자이며 처음에는 넘어서야 할 특정 기준이 있습니다. 처음에는 많은 "멍청한"질문을하게 될 것입니다. 그러나 모든 실험을 시도하고 계속 노력하면 계속 배우게됩니다.

  5. ==============================

    5.따라서 기본적으로 브라우저에 무엇인가를 출력하고 스크립트 나 함수를 끝내고 스크립트의 다른 부분에 데이터를 전달하려는 경우 return을 사용하고 싶을 때마다 echo를 사용하려고합니다.

    따라서 기본적으로 브라우저에 무엇인가를 출력하고 스크립트 나 함수를 끝내고 스크립트의 다른 부분에 데이터를 전달하려는 경우 return을 사용하고 싶을 때마다 echo를 사용하려고합니다.

  6. ==============================

    6.그것을 테스트 한 후에 발견 된 차이점이 몇 가지 있습니다.

    그것을 테스트 한 후에 발견 된 차이점이 몇 가지 있습니다.

    1) return은 단지 함수의 값을 반환합니다. 변수에 저장 한 후에 사용하지만 echo는 단순히 함수를 호출 할 때 값을 출력하고 아무 것도 반환하지 않습니다.

    여기에 대한 간단한 예가 있습니다.

    function myfunc () {     echo "나는 태어난 프로그래머"입니다.     }

    $value = myfunc(); \\ it is going to print the 'i am a born programmer' as function would be called
    
    if(empty($value)===true)  {
      echo "variable is empty because function returns nothing"; 
    

    }

  7. ==============================

    7.함수의 응답 사이의 차이점은 "echo"가 브라우저 (DOM)에 뭔가를 보내고 "return"은 호출자에게 뭔가를 반환한다는 것입니다.

    함수의 응답 사이의 차이점은 "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 .
    
  8. ==============================

    8.예제를 약간 수정하면 다음과 같습니다.

    예제를 약간 수정하면 다음과 같습니다.

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

    차이점을 확인할 수 있습니까?

  9. ==============================

    9.echo는 텍스트 등을 문서로 렌더링하고, return은 함수 / 메소드 등에서 호출 한 데이터로 리턴합니다. 수익을 반향 시키면 렌더링됩니다 (텍스트 / 숫자 등으로 가정 - 객체가 아닌 것으로 가정).

    echo는 텍스트 등을 문서로 렌더링하고, return은 함수 / 메소드 등에서 호출 한 데이터로 리턴합니다. 수익을 반향 시키면 렌더링됩니다 (텍스트 / 숫자 등으로 가정 - 객체가 아닌 것으로 가정).

  10. ==============================

    10.두 함수 모두 뒤에 출력을 토글하는 행이 있습니다.

    두 함수 모두 뒤에 출력을 토글하는 행이 있습니다.

    echo "<p>2 + 2 = ", add1(2, 2), "</p>";
    echo "<p>2 + 2 = ", add2(2, 2), "</p>";
    

    echo는 읽을 수 있도록 값을 인쇄합니다. return은 예제 변수에 저장할 값을 반환합니다.

    $result = add2(2, 2);
    // do more with result ... ?
    // output the result
    echo $result;
    
  11. ==============================

    11.기본적으로 PHP를 HTML로 출력하려면 echo를 사용해야합니다. 다른 말로하면, 우리는 그것을 되풀이 할 필요가 있습니다.

    기본적으로 PHP를 HTML로 출력하려면 echo를 사용해야합니다. 다른 말로하면, 우리는 그것을 되풀이 할 필요가 있습니다.

    아래의 두 예는 명확한 이해를 제공합니다.

    function myfunction() {
    // script content here, and sample out maybe like this :
    
    return $result; ---> sample 1
    echo $result;   ---> sample 2
    
    }
    

    각 샘플에 대해 $ 결과를 html로 표시하려면 다음을 입력하십시오.

    샘플 1의 경우 를 사용해야합니다.

    샘플 2의 경우 를 사용해야합니다.

    샘플 2에서는 함수 안에 echo가 있기 때문에 echo 할 필요가 없습니다.

  12. ==============================

    12.Buddypress에서 변경 작업을하는 동안 배웠던 한 가지는 주로 중첩 된 핵심 기능에 대한 반환을 사용하고 sprintf를 사용하여 동적 변수를 HTML에 바인딩하고 HTML의 chunck을 호출 된 주 기능으로 되돌려 놓는 것입니다 그런 다음에 만 주요 기능에서 한 번 울립니다. 이렇게하면 코드가 모듈화되고 디버그가 쉬워집니다.

    Buddypress에서 변경 작업을하는 동안 배웠던 한 가지는 주로 중첩 된 핵심 기능에 대한 반환을 사용하고 sprintf를 사용하여 동적 변수를 HTML에 바인딩하고 HTML의 chunck을 호출 된 주 기능으로 되돌려 놓는 것입니다 그런 다음에 만 주요 기능에서 한 번 울립니다. 이렇게하면 코드가 모듈화되고 디버그가 쉬워집니다.

  13. ==============================

    13.내 관점에서 에코와 리턴의 가장 중요한 차이점은 다음과 같습니다. 각각에 대한 결과의 데이터 유형. 우리가 아래와 같은 함수를 작성할 때 :

    내 관점에서 에코와 리턴의 가장 중요한 차이점은 다음과 같습니다. 각각에 대한 결과의 데이터 유형. 우리가 아래와 같은 함수를 작성할 때 :

    <?php
        $value = 150;
    
        function firstFunction($value) {
            return $value + 1;
        }
        echo firstFunction($value) . '<br />';
    
        function secondFunction($value) {
            echo $value + 1;
        }
        secondFunction($value);
    

    예, 둘 다 출력 값으로 151을줍니다. 그러나 반환 케이스에서는 firstFunction ($ value)를 int 데이터 유형으로 인쇄합니다. 그 밖에도 에코의 경우 secondFunction ($ value)을 NULL 데이터 형식으로 출력합니다. var_dump () 함수를 사용하여 각각을 인쇄 해 보면 내가 무엇을 의미하는지 알 수있다.

    <?php
        var_dump(firstFunction($value)); ?>
        <br />
    <?php
        var_dump(secondFunction($value));
    

    이러한 차이는 데이터베이스에서 반환되는 일부 값, 특히 (조회 후 계산) 또는 이와 유사한 연산을 수행 할 때 우리에게 도움이됩니다. 그것은 여기에 쓰여진 것에 대해 이해가 될 것입니다. 나는 그것을 쉬운 방법으로 설명하기를 희망한다.

  14. from https://stackoverflow.com/questions/9387765/what-is-the-difference-between-php-echo-and-php-return-in-plain-english by cc-by-sa and MIT license