Verschil "echo" en "return"

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Maarten Aders

Maarten Aders

29/08/2012 22:03:35
Quote Anchor link
Hallo,

Ik zou graag willen weten wat precies het verschil is tussen een "echo" en een "return"..

Ik weet dat je een "return" toepast in een function(); , maar ik snap het niet helemaal..

Hieronder wat voorbeeld code (waarin echo en return beide werken en exact hetzelfde doen, lijkt althans):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function add($a,$b)
    {

    $math = $a + $b;
    echo $math;
    }


echo add(7,348);
?>


Bij voorbaat dank,
Maarten Aders
 
PHP hulp

PHP hulp

22/12/2024 20:20:01
 
John Berg

John Berg

29/08/2012 22:10:16
Quote Anchor link
De bedoeling is dat je dit doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function add($a,$b)
{

    $math = $a + $b;
    return $math;
}


echo add(7,348);
?>


echo schrijft een waarde naar het scherm, return geeft de waarde van een functie terug aan de aanroepende partij.

Het beste zie je dat als je jouw code als volgt aanpast:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function add($a,$b)
{

    $math = $a + $b;
    echo $math;
}


$resultaat = add(7,348);
var_dump($resultaat);
?>


Je zou nu verwachten dat resultaat 355 is, maar dat is niet zo. $resultaat is NULL
En als bijeffect wordt 355 op het scherm gezet, terwijl je daar niet om gevraagd hebt.
Gewijzigd op 29/08/2012 22:20:12 door John Berg
 
Maarten Aders

Maarten Aders

29/08/2012 22:21:00
Quote Anchor link
Wow,

Daar moet ik even goed naar kijken.. Thx voor de hulp..

Ondertussen heb ik zelf ook al uitgevogeld dat als ik de "return" vervang voor "echo", ik bij het aanroepen van de functie geen "extra" echo meer hoef te typen, maar gewoon alleen de functie(-naam), alsof er helemaal geen parameters in de functie zitten, en de functie alleen maar een simpele "echo" uitvoert.

Hopelijk is dit een beetje te volgen.. :P
 
- Ariën  -
Beheerder

- Ariën -

29/08/2012 22:23:00
Quote Anchor link
Simpeler gezegd:

Een echo is direct zichtbaar, en een retrun-waarde is onzichtbaar.
Met die 'ontzichtbare' waarde mag je zelf doen wat je wilt.
 
Maarten Aders

Maarten Aders

29/08/2012 22:34:21
Quote Anchor link
Ja, die uitleg heb ik eerder gehoord..! Maar kwam nog een beetje neer op de "klok en de klepel"..

Ik zal er wat mee moeten rommelen, om uit te vogelen wat het precies doet e.d.

Thx..
 
Frank WD

Frank WD

29/08/2012 22:40:19
Quote Anchor link
-Aar-, is het niet zo, altans ik heb het altijd zo begrepen.
Als je iets direct wilt weergeven door php dan gebruik je 'echo', zowel in een functie als daarbuiten. Maar als je een functie boven aan je pagina zet en je gebruikt daar een 'echo' dan zul je dus boven aan je pagina de waarde te zien krijgen.

Omdat op te vangen zet je in de functie dan 'retrun' neer en roep je elders op de pagina de retrun aan met een echo + functie naam?

Zo heb ik dat altijd begrepen in het verschil tussen echo en retrun gebruik in functie's. Verbeter mij even als ik er naast zit.
 
- Ariën  -
Beheerder

- Ariën -

29/08/2012 22:59:08
Quote Anchor link
Ja, je kan in een functie een echo doen, echter is dit niet altijd wenselijk. Vooral als je in OOP werkt (functies, classes in de juiste opbouw) dan is een echo in een functie echt not-done.

Ook uit oogpunt van overzichtelijkheid is het kiezen voor het één of het ander, of je plaatst ene echo in de functie, of anders daarbuiten, in de proceduele code. In mijn ogen is dit laatste ook het beste leesbaarder en makkelijker te debuggen.
 
Wouter J

Wouter J

30/08/2012 00:23:58
Quote Anchor link
Frank, dat bekijk je verkeerd. En overigens is het ook in functioneel programmeren al not-done om echo's in functies te plaatsen.

Een return is echt iets totaal anders dan een echo. Met een return geef je weer wat een functie teruggeeft, bijv. isset($foo) zal true of false teruggeven. De functie zal er zoiets uitzien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function isset($var)
{

    if (condition) {
        return true;
    }
else {
        return false;
    }
}

?>


Om te weten waarom we bij functies altijd return gebruiken en geen echo/print/iets anders moeten we teruggaan naar waarom we een functie schrijven. We beginnen daarom met deze hele simpele code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo 59 + 41; // geeft 100, maar dat terzijde
?>


Stel dat we ergens verderop in de code dit nogmaals doen. Dan ga je bij je zelf nadenken en denk je, waarom zou ik hier geen functie van maken. Stel dat ik later de plus in een keer wil veranderen dan hoef ik dat maar op 1 plek te veranderen, we gaan functioneel denken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function sum($a, $b)
{

    echo $a + $b;
}


sum(59, 41); // geeft ook 100

sum(1, 1); // geeft 2
?>


Alleen we gaan nog functioneler denken, we gaan proberen zoveel mogelijk situaties waarin we de plus gebruiken op te lossen met 1 functie. In deze 2 situaties willen we de waarde echoën, maar wat als we later niet de waarde willen echoën, maar willen wegschrijven in een bestand of als argument voor een volgende functie willen gebruiken? Dan hebben we niks meer aan deze functie.
I.p.v. in de functie zelf te bepalen wat er met het resultaat gebeurd (namelijk het echoën) gaan we het resultaat gewoon teruggeven. Wat er daarna met deze waarde gebeurd zal die functie niks schelen, hij heeft zijn taak gedaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function sum($a, $b)
{

    return $a + $b;
}


sum(59, 41); // doet niks
// we moeten aangeven dat we de waarde gaan echoën...

echo sum(59, 41); // geeft 100

// ...of als argument gebruiken voor een volgende functie...

foo(sum(1, 1));

// ...of in een if conditie gebruiken
if (10 == sum(5, 5)) {
    // ...
}
?>


Dat is waarom we altijd returns gebruiken en niet bijv. een echo. Hopelijk is nu ook de taak van een return duidelijk.

Offtopic:
Als we onze functie nog functioneler willen maken zullen we moeten gaan nadenken aan situaties als dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
sum(5, 4, 3, 2, 1);
?>

We kunnen dit bijv. op deze manier oplossen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
function sum()
{

    $answer = 0;

    foreach (func_get_args() as $number) {
        $answer += $number;
    }


    return $answer;
}

?>
 
Ozzie PHP

Ozzie PHP

30/08/2012 08:23:32
Quote Anchor link
Wat een hoop uitleg allemaal. Het is heel simpel:

echo => toon direct iets op het scherm, bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
echo 'kat';
echo 'hond';
$naam = 'piet';
echo $naam;
echo 1 + 1;
?>


return => geef een waarde terug, bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function test() {
  return 'piet';
}


$naam = test();

// de waarde 'piet' wordt teruggegeven door de functie test en wordt
// vervolgens in de variabele $naam gestopt. De variabele $naam kunnen
// we nu weer op het scherm tonen met echo.


echo $naam;

?>


Snap je?
Gewijzigd op 30/08/2012 08:23:51 door Ozzie PHP
 
Maarten Aders

Maarten Aders

04/09/2012 21:55:41
Quote Anchor link
Heren (en dame geloof ik),

Laat ik beginnen met mezelf verontschuldigen, omdat ik totaal niet meer heb gereageerd op alle antwoorden op mijn vraag over het verschil tussen "echo" en "return"..!

Ik ben mezelf ondertussen in aan het graven in (multi-dimensionale) arrays en de "sprintf()" dinges..

Zit midden in een php-opleiding en vind het behoorlijk pittig..

Anyway, ik heb net nogmaals de reacties teruggelezen en ik moet zeggen dat er hele uiteenlopende en verhelderende antwoorden bij zaten.. Misschien dat juist die uiteenlopendheid mij er zo breed over laat nadenken..

Bedankt!
 
Eddy E

Eddy E

04/09/2012 22:06:36
Quote Anchor link
Wouter J op 30/08/2012 00:23:58:
Frank, dat bekijk je verkeerd. En overigens is het ook in functioneel programmeren al not-done om echo's in functies te plaatsen.


Mee eens.
Het is een goed gebruik GEEN echo te gebruiken in een functie.
Soms wil je een functie uitvoeren die html-code maakt, maar nog niet (daar) tonen. Wellicht wil eerst zien wat er komt.

Na een echo kan je er niets meer aan doen.
Ja, met ob_start() en dat soort dingen die je niet dient te gebruiken voor dit.
 
Frank WD

Frank WD

04/09/2012 22:20:56
Quote Anchor link
Wouter J, bedankt voor de goede uitleg.
Ik heb hem dus altijd beetje verkeerd begrepen maar snap hem nu wel.
Bedankt voor de uitleg.
 
Maarten Aders

Maarten Aders

04/09/2012 22:32:44
Quote Anchor link
Kijk, zo hebben we er allemaal wat aan..
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.