Page 1 of 2 12 Last
  1. #1
    50Euro's Avatar
    Registered
    15/08/03
    Location
    Moorsele
    Posts
    2,552
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/18

    PHP: Reference - &

    Wil er mij iemand uitleggen wat die "&" eigenlijk doet?
    Het is eigenlijk geen toekenning aan de variable maar een verwijzing of zo..
    PHP Code:
    <?php
    $foo 
    'Bob';              // Assign the value 'Bob' to $foo
    $bar = &$foo;              // Reference $foo via $bar.
    $bar "My name is $bar";  // Alter $bar...
    echo $bar;
    echo 
    $foo;                // $foo is altered too.
    ?>
    Bij
    PHP Code:
    echo $bar;
    echo 
    $foo
    is de output bij beide "My Name Is Bob"
    Als je de "&" weg doet krijg je bij
    PHP Code:
    echo $foo
    als output gewoon "Bob"..

    Liefst een simpele uitleg... (Ben nog maar pas begonnen...)

    Bron PhP.Net
    Nintendo ID & PSN & Xbox Live & Steam: FiFtyEuro
    no votes  

  2. #2

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    simpele uitleg:

    $bar wordt hier gewoon als andere variabelenaam voor $foo gezien.

    je kan dus zeggen dat $bar en $foo altijd in alle opzichten gelijk zijn .
    no votes  

  3. #3
    50Euro's Avatar
    Registered
    15/08/03
    Location
    Moorsele
    Posts
    2,552
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/18
    Zonder de "&" zouden ze gelijk zijn...

    Nu is het een verwijzing die ik niet snap...

    Die "&" maakt ook een verandering in $foo...

    Want $foo is ook "My Name Is Bob" geworden..

    Ps. De uitleg mag iets complexer zijn hoor..
    Last edited by 50Euro; 21-04-2004 at 22:45.
    Nintendo ID & PSN & Xbox Live & Steam: FiFtyEuro
    no votes  

  4. #4

    Registered
    18/11/02
    Location
    Eke, België
    Posts
    2,448
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Ge moet een variabele eigenlijk zien als volgt:

    naam die verwijst naar inhoud op een bepaald adres (adres in het computergeheugen)
    PHP Code:
    // vb1.
    $foo 'bob'
    de inhoud van de variabele $foo is dus bob, en zijn adres dat wordt intern bijgehouden en geaccocieerd met de variabelenaam.

    Over nu naar dat &-teken:
    PHP Code:
    // vb2.
    // expressie 1
    $bar $foo;

    // expressie 2
    $bar =  &$foo
    In expressie 1 gebeurt het volgende: de inhoud waar het adres van de variabele $foo naar verwijst wordt opgehaald en in een nieuwe adresruimte gestoken die geassocieerd wordt met $bar. (Er wordt als het ware een kopie genomen van de inhoud en in een nieuwe adresruimte gestoken.)

    Kort:
    $foo verwijst naar bepaalde adresruimte
    $bar verwijst naar andere adresruimte met gelijkaardige inhoud (kopie)

    ---

    In expressie 2 gebeurt ernet iets anders, in plaats van een kopie te nemen van de inhoud op de adresruimte van $foo, zorgt de &-operator ervoor dat ook de variabele $bar nu naar diezelfde adresruimte van $foo verwijst. Met andere woorden je creëert als het ware een alias voor de inhoud op de adresruimte voorheen geassocieerd met $bar.

    Dit impliceert dus dat wanneer je iets via de ene variabele verandert en je output de andere variabele, dat via beide variabelen die wijziging zichtbaar zal zijn, aangezien ze naar hetzelfde verwijzen:

    Kort:
    $foo verwijst naar bepaalde adesruimte
    $bar verwijst naar diezelfde adresruimte
    (ze verwijzen dus naar exact dezelfde inhoud)

    Hopelijk is het wat duidelijk.

    Dit begrip is vergelijkbaar met een pointer (een verwijzing naar, het wijst naar, to point to)

    Grtz,
    db
    Last edited by DarkBone; 21-04-2004 at 23:09.
    no votes  

  5. #5

    Registered
    18/11/02
    Location
    Eke, België
    Posts
    2,448
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Trouwens, je mag gerust je threads laten staan hoor... andere mensen kunnen er nog uit leren (via gebruik van de search).

    En ik doe tenslotte ook wat moeite dit telkens te typen

    Thx.
    no votes  

  6. #6
    50Euro's Avatar
    Registered
    15/08/03
    Location
    Moorsele
    Posts
    2,552
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/18
    Je hebt gelijk... Ik zal ze laten staan.. Je kan hier nog iets van leren..

    Dus door in dit voorbeeld "$bar" te wijzigen door onderstaande...
    PHP Code:
    $bar "My name is $bar"
    verander je "$foo" ook?

    Kan je eens een voorbeeld geven waar men deze instructie vooral gebruikt?
    M.a.w. waar is ze nuttig voor?

    Bedankt voor al die moeite trouwens...
    Nintendo ID & PSN & Xbox Live & Steam: FiFtyEuro
    no votes  

  7. #7

    Registered
    18/11/02
    Location
    Eke, België
    Posts
    2,448
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Klopt wat je zegt.

    References worden vooral gebruikt bij het doorgeven van parameters aan functies, een functie ontvangt standaard altijd een kopie van de variabelen die je meegeeft. Indien je echter de variabele laat voorgaan door een &-teken, dan zal geen kopie worden meegegeven, maar een verwijzing naar de oorspronkelijke inhoud/variabele.

    Ik neem als voorbeeld het verhogen van een waarde:

    PHP Code:
    // voorbeeld 1
    $count 0;
    addOne($count);
    echo 
    $count;

    function 
    addOne($count)
    {
         
    $count $count 1;

    In bovenstaand voorbeeld zal de output 0 zijn.


    PHP Code:
    // voorbeeld 2
    $count 0;
    addOne($count);
    echo 
    $count;

    function 
    addOne(&$count)
    {
         
    $count $count 1;

    In bovenstaand voorbeeld zal de output echter NIET 0 zijn, maar 1 !!.

    Je bewerkt namelijk de oorspronkelijke variabele.

    Duidelijk ?

    ps: ik hoop dat je het stuk over functies al gelezen hebt
    no votes  

  8. #8

    Registered
    18/11/02
    Location
    Eke, België
    Posts
    2,448
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Het is niet onmiddelijk het meest makkelijke begrip en het is lichtjes verschillend van pointers zoals we die kennen in C/C++ (de PHP manual gaat wat dieper in op de verschillen, maar wat meer programmatorisch inzicht is misschien vereist, nogal 'moeilijke' voorbeelden om vlot te begrijpen).

    Niet van wakker liggen als je het niet onmiddelijk begrijpt, het staat wat ongelukkig zo hoog in de manual terwijl het toch een behoorlijk complex begrip is om zomaar van de eerste keer te snappen als je nog weinig ervaring/kennis hebt van php.

    Het simpelste is gewoon om het te zien als een soort alias toekenning.

    Grtz,
    db
    no votes  

  9. #9
    50Euro's Avatar
    Registered
    15/08/03
    Location
    Moorsele
    Posts
    2,552
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/18
    Dus zo kan je oneindig lang doorgaan zoals in mijn klein vb

    PHP Code:
    <?php
    $foo 
    '50Euro';              // Assign the value 'Bob' to $foo
    $bar = &$foo;              // Reference $foo via $bar.
    $bar "My name is $foo";  // Alter $bar...
    $bar "Nu lees je dit! $foo";
    echo 
    "<hr>";
    echo 
    $bar;
    echo 
    "<hr>";
    echo 
    $foo;                // $foo is altered too.
    ?>
    Kan je trouwens een spatie zetten in een variable?
    PHP Code:
    $bar "My name is $foo<br>"
    Werkt niet...

    Functions???? Al eens snel gelezen maar nog niet echt in verdiept(zoals in veel dingen van PHP)...
    Nintendo ID & PSN & Xbox Live & Steam: FiFtyEuro
    no votes  

  10. #10

    Registered
    18/11/02
    Location
    Eke, België
    Posts
    2,448
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Hmmm... nog niet zo slecht gezien, je zou inderdaad denken dat $foo zichzelf oneindig blijft ophalen, maar dat gebeurt dus niet.

    *edit*
    Bij nader inzien toch volkomen logisch
    Was even verward.

    PHP Code:
    $bar "Nu lees je dit! $foo"
    Voordat de toekenning gebeurt wordt $foo namelijk vervangen door zijn waarde op dat moment (toekenning isnog niet gebeurt, dus dat is nog steeds 'My name is 50Euro').

    Dus wordt dat dan: 'Nu lees je dit! My name is 50Euro'
    Last edited by DarkBone; 21-04-2004 at 23:31.
    no votes  

  11. #11

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Originally posted by 50Euro
    Zonder de "&" zouden ze gelijk zijn...
    (had geen tijd om volgende replies te lezen)

    foute stelling

    als je hebt

    $foo = $bar;

    dan ken je de waarde van bar toe aan foo, waardoor de inhoud nu wel hetzelfde wordt, maar de variabelen niet hetzelfde zijn.

    met $foo = &$bar; Zorg je ervoor dat deze vars volledig hetzelfde zijn, ze verwijzen constant naar dezelfde plaats waar deze waarde is opgeslaan.

    PHP Code:
    $bar "My name is {$foo}<br>"
    is de werkende syntaxis normaal gezien.
    no votes  

  12. #12
    50Euro's Avatar
    Registered
    15/08/03
    Location
    Moorsele
    Posts
    2,552
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/18
    PHP Code:
    <?php
    function test_global_ref() {
       global 
    $obj;
       
    $obj = &new stdclass;
    }

    function 
    test_global_noref() {
       global 
    $obj;
       
    $obj = new stdclass;
    }

    test_global_ref();
    var_dump($obj);
    echo 
    '<hr>';
    test_global_noref();
    var_dump($obj);
    ?>
    Output:
    NULL
    --------------------------------------------------------------------------------
    object(stdClass)(0) { }
    Waarvoor staat stdclass?
    Nintendo ID & PSN & Xbox Live & Steam: FiFtyEuro
    no votes  

  13. #13
    dJeez's Avatar
    Registered
    17/07/02
    Location
    Sol System
    Posts
    10,064
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/78
    Originally posted by 50Euro
    Waarvoor staat stdclass?
    Waarom lees je de documentatie op de PHP site niet?
    http://be2.php.net/language.types.object
    PSN: dJeezBE - Delicious bookmarks
    Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alieno
    Pastafarian by choice
    no votes  

  14. #14
    50Euro's Avatar
    Registered
    15/08/03
    Location
    Moorsele
    Posts
    2,552
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/18
    Ik snap eigenlijk nog niet zoveel hoor.
    Ben gisteren pas effectief begonnen met PHP.
    Ik krijg er soms koppijn van en ken de basis nog niet!

    Wat is nu eigenlijk een class en een object?

    Wat doen volgende voorbeelden?

    Objects
    Object Initialization
    To initialize an object, you use the new statement to instantiate the object to a variable.

    PHP Code:
    <?php
    class foo
    {
       function 
    do_foo()
       {
           echo 
    "Doing foo."
       }
    }

    $bar = new foo;
    $bar->do_foo();
    ?>


    For a full discussion, please read the section Classes and Objects.

    Converting to object
    If an object is converted to an object, it is not modified. If a value of any other type is converted to an object, a new instance of the stdClass built in class is created. If the value was null, the new instance will be empty. For any other value, a member variable named scalar will contain the value.


    PHP Code:
    <?php
    $obj 
    = (object) 'ciao';
    echo 
    $obj->scalar;  // outputs 'ciao'
    ?>
    Bron PHP.NET
    Nintendo ID & PSN & Xbox Live & Steam: FiFtyEuro
    no votes  

  15. #15
    sneax's Avatar
    Registered
    25/07/02
    Location
    Aalst
    Posts
    13,457
    iTrader
    6 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/156
    ge wilt alles veel te snel ineenekeer doen

    leer eerst wa me vars werken

    leer dan if'en en while'en enzo

    leer dan functies

    classes en objecten hebt ge ni nodig voor de meeste dignen, hou u daar ni mee bezig (zeker ni op uwen 2en dag)

    etc...

    zoek nen tutorial da begint me 'hello world' en dan opbouwt
    safir Thom4s
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in