Avatar billede lsolesen Nybegynder
23. oktober 2003 - 21:21 Der er 16 kommentarer og
1 løsning

Hvad er en reference variabel

Hvad er en 'reference variable'?
Avatar billede erikjacobsen Ekspert
23. oktober 2003 - 21:27 #1
Det er når du laver en "pointer" til en værdi i stedet for at tage en kopi

$a=17;
$b&=$a;
$b=19;
print $a;

hvad tror du der udskrives?
Avatar billede lsolesen Nybegynder
23. oktober 2003 - 21:31 #2
Jeg tror der udskrives 17 :)
Avatar billede erikjacobsen Ekspert
23. oktober 2003 - 21:33 #3
prøv så
Avatar billede fangel Nybegynder
23. oktober 2003 - 21:35 #4
erik -> skal det ikke være $b = &$a;

Moretn
Avatar billede squashguy Nybegynder
23. oktober 2003 - 21:36 #5
lidt det samme princip:

$a = 17;
$b = "a";
$$b = 19;
print $a;

hvad tror så der udkrives her :)
Avatar billede erikjacobsen Ekspert
23. oktober 2003 - 21:40 #6
Jo, Moretn, trykfejl ;)
Avatar billede lsolesen Nybegynder
23. oktober 2003 - 21:58 #7
erikjacobsen > der blev udskrevet 19 efter tilrettelsen med Mortens. Hvad bruger man det helt nøjagtig til?
Avatar billede erikjacobsen Ekspert
23. oktober 2003 - 22:01 #8
Fx: Hvis du har et objekt med mange attributter vil det oftest være billigere
at lave en reference til det, end at lave en kopi.
Avatar billede lsolesen Nybegynder
23. oktober 2003 - 22:15 #9
Altså her har jeg et objekt med mange attributter:

class Objekt {

    var $attribut;
    var $attribut2;
    var $attribut3;
    var $attribut4;

    function Objekt() {
    }
}
Avatar billede lsolesen Nybegynder
23. oktober 2003 - 22:18 #10
Eller kan du forklare det ift. brugen i følgende taget fra phppatterns.com:

<?php
class RandomMessage {
    var $messages;
    function RandomMessage() {
        // An array of messages
        $this->messages=array(
            'Hello World!','Goodbye World!'
            );
       
        // Shuffle the messages
        srand ((float)microtime()*1000000);
        shuffle ($this->messages);
    }

    function getMessage() {
        return $this->messages[0];
    }
}


class MessageMaker {
    // The factory method...
    function & makeMessage () {
        // Return a new instance of RandomMessage
        return new RandomMessage();
    }
}


$messageMaker=new MessageMaker;

for ( $i=0; $i<10; $i++ ) {
    $randomMessage=& $messageMaker->makeMessage();
    echo ( $randomMessage->getMessage().'<br />' );
}
?>
Avatar billede erikjacobsen Ekspert
23. oktober 2003 - 22:21 #11
I

class MessageMaker {
    // The factory method...
    function & makeMessage () {
        // Return a new instance of RandomMessage
        return new RandomMessage();
    }
}

laver du et nyt objekt med new. Uden & efter "function" bliver der lavet en kopi
af dette objekt når funktionen er færdig. Ganske overflødigt.
Avatar billede lsolesen Nybegynder
23. oktober 2003 - 22:24 #12
Hvornår kan det så betale sig ift. ikke betale sig?
Avatar billede erikjacobsen Ekspert
23. oktober 2003 - 22:28 #13
3 dage efter fuldmåne i frostklare nætter med østenvind, kan det ikke betale sig.

....ja, altså, prøv dig frem....
Avatar billede lsolesen Nybegynder
24. oktober 2003 - 19:37 #14
Smid lige svar, så jeg kan give nogle point :)
Avatar billede lsolesen Nybegynder
10. juni 2006 - 17:37 #15
Svar venligst!
Avatar billede erikjacobsen Ekspert
10. juni 2006 - 21:37 #16
Jeg samler slet ikke på point, tak.
Avatar billede lsolesen Nybegynder
12. juni 2006 - 08:12 #17
Så lukker jeg og tager dem selv :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester