В чем разница между PHP echo и PHP return на простом английском языке? - PullRequest
38 голосов
/ 22 февраля 2012

Да, я погуглил этот вопрос и даже сослался на свой учебник (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>";

?>

Оба отображают результат! Что я не понимаю?

Ответы [ 13 ]

1 голос
/ 08 января 2015

По сути, для вывода PHP в HTML мы должны использовать echo. Другими словами, мы должны повторить это.

Эти два примера ниже дадут ясное понимание:

function myfunction() {
// script content here, and sample out maybe like this :

return $result; ---> sample 1
echo $result;   ---> sample 2

}

, чтобы показать $ результат в HTML для каждого образца:

для образца 1 мы должны использовать <?php echo $result ?>

для образца 2 мы должны использовать <?php $result ?>

В примере 2 нам не нужно выводить его, потому что мы имеем его внутри функции.

0 голосов
/ 16 сентября 2016

Самое важное различие между echo и return в моей точке зрения:
тип данных результата для каждого.
когда мы пишем некоторые функции, как показано ниже:

<?php
    $value = 150;

    function firstFunction($value) {
        return $value + 1;
    }
    echo firstFunction($value) . '<br />';

    function secondFunction($value) {
        echo $value + 1;
    }
    secondFunction($value);

и да, оба они дадут нам 151 в качестве выходного значения.
Но , в случае return мы напечатаем firstFunction($value) как тип данных int.
В противном случае в случае echo мы напечатаем secondFunction($value) как тип данных NULL.
Вы можете попробовать распечатать каждый из них с помощью функции var_dump(), чтобы понять, что я имел в виду.

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

Эта разница принесет нам пользу, когда мы будем обрабатывать некоторые значения, возвращаемые из баз данных, особенно в математических операциях, таких как (количество просмотров записей) или что-то в этом роде.
Это будет иметь смысл по сравнению с тем, что было написано здесь.
надеюсь, я объяснил это простым способом.

0 голосов
/ 08 июля 2016

Одна вещь, которую я узнал при внесении изменений в Buddypress, это то, что он использует возврат в основном для вложенных основных функций, а затем с помощью sprintf связывает динамические переменные в HTML и возвращает этот кусок html обратно в основную функцию, где он вызывался, и только потом он эхом разнесся по основной функции. Благодаря этому код становится модульным и его легче отлаживать.

...