Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

returnwaarde mee nemen vanuit functie (php)

Rumaro
4 antwoorden
  • start.php
    [code:1:9753b4a36a]<?php
    include("binnen.php");
    $overslaan='false';
    binnen($overslaan);
    echo '<br>'.$overslaan;
    ?>[/code:1:9753b4a36a]

    binnen.php
    [code:1:9753b4a36a]<?php
    function binnen($overslaan)
    {
    $overslaan="true";
    echo $overslaan;
    return $overslaan;
    }
    ?>[/code:1:9753b4a36a]

    Ik krijg als uitkomst
    true
    false

    Het is duidelijk dat de variable waarde NIET wordt meegenomen vanuit de functie, maar waarom NIET ??

    Ik zal wel iets fout doen, maar kan niet ontdekken wat.
  • Ik heb het al in een boek gevonden:
    function binnen(&$overslaan)

    Ben ik dagen zoet mee geweest. :cry:
  • Het gaat mis omdat je de geretourneerde waarde niet opslaat. Juist zou zijn:


    Start.php[code:1:4763476567]<?php
    include("binnen.php");
    $overslaan = 'false';
    $overslaan = binnen($overslaan);
    echo '<br>'.$overslaan;
    ?>[/code:1:4763476567]Overigens is het mij onduidelijk waarom je boolean waarden zou opslaan als string, maar voor de test is dat niet zo interessant.

    - Bas
  • [quote:6d0129fe24="Rumaro"]Ik heb het al in een boek gevonden:
    function binnen(&$overslaan)[/quote:6d0129fe24]Ai, ik weet niet of dat zo verstandig is! (Of eigenlijk: gebruik die alleen als je weet wat je doet!)

    Het verschil zit 'm namelijk in de [i:6d0129fe24]scope[/i:6d0129fe24] van de variabele. Waar je in je eerste post de variabele aanroept als [i:6d0129fe24]call by value[/i:6d0129fe24] (gebruik de waarde van de parameter maar verander de waarde van de originele variabele niet) doe je het bij de tweede als [i:6d0129fe24]call by reference[/i:6d0129fe24] (alle aanpassingen op de variabele werken door in de doorgegeven variabele). Deze laatste methode is doorgaans wat ondoorzichtig en kan bij verkeerd gebruik hele vervelende en onvoorspelbare gevolgen hebben. Call by value is eigenlijk altijd de voorkeursmethode, met als uitzondering het gebruik van variabelen met een hele complexe structuur (ingewikkelde objecten).

    Gezien het feit dat je een waarde retourneert (op zichzelf juist) lijkt het mij dat je niet wil werken met call by reference, welke in dit geval een onjuist lapmiddel is.

    - Bas

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.