"Bertel Lund Hansen skrev
> Arrayet bliver ikke fyldt op med henvisninger (i programmerings
> hedder det "en reference") til de variable der indgår. Det bliver
> kun fyldt op med konstante værdier - variablene bliver oversat
> når arrayet oprettes.
Aha, nu forstår jeg, det er ikke "variablen" der bliver lagret i arrayet,
men dens værdi, det svarer til at man havde skrevet værdierne manuelt ind.
> Man kunne godt tænke sig et sprog hvor det var en reference der
> blev lagret i arrayet, men konsekvenserne ville være
> uoverskuelige. Hvis man f.eks. i det sprog ville oprette to
> arrays:
>
> $test = array($to,$tre);
>
> $nytest = array($tre,$to);
>
> og man så ændrer i ét array, slår ændringen så igennem både i det
> andet array og i grundvariablene. Det ville være uoverskueligt.
Kan godt se at man skal pase på hvad man laver, især hvis man har en del
linier at holde rede på.
> Imidlertid har flere sprog, og heriblandt også PHP, mulighed for
> at man selv kan specificere en reference. Jeg ved dog ikke om det
> er smart at du begynder at rode med det endnu for som sagt kan
> man lave noget værre spaghetti på den måde, men muligheden er
> uundværlig for den der ved hvad den skal bruges til.
>
> Eksempel 1 uden reference:
> $syv = 7;
> $cirkasyv = $syv;
> $cirkasyv -= 1;
> echo $syv.' '.$cirkasyv;
> Udskrift: 7 6
>
> Eksempel 2 med reference:
> $syv = 7;
> $cirkasyv = &$syv; // reference til $syv
> $cirkasyv -= 1;
> echo $syv.' '.$cirkasyv;
>
> Udskrift: 6 6
>
> Hvis du vil have et array med referencer - som altså kan ændre
> grundvariablene - skal du skrive sådan:
>
> $test = array(&$to,&$tre);
Det er lige præcis den funktionalitet jeg ledte efter, super!
> Jeg bruger referencer til at overføre 'kendskab' til en variabel
> inden i en funktion:
>
> function skriv_skema (&$partier,$ug) { ...
Så dette gør du fordi du ønsker at funktionen skal ændre din oprindelige
variabel?
for værdien af variabel $partier er jo "kendt" fordi den er argument.
> Alternativet er
>
> function skriv_skema ($ug) {
> GLOBAL $partier;
>
> Jeg bruger også referencer til blot at få koden til at se
> overskuelig ud. Hvis jeg har en variabel der skal bruges flere
> steder, og den ser rodet ud:
>
> $initarray[$xkoordinat[$lang]][$ykoordinat[$kort]]
>
> så kan jeg erstatte den sådan:
>
>
> $short_var=&$initarray[$xkoordinat[$lang]][$ykoordinat[$kort]]
>
> Så kan jeg i resten af koden bruge det korte navn med præcis
> samme effekt som det lange. Det sparer også lidt beregningstid.
> Jeg finder dog altid et bedre beskrivende variabelnavn end blot
> "short_var".
Ja, sigende navne hjælper en på sigt, og det er smart at "pakke" variablen
på den måde.
>> Det forstår jeg ikke helt, kunne forestille mig at problematikken var tæt
>> på
>> det jeg spurgte om i går.
>
> Tjo, der er lighedspunkter.
Tak igen, for forklaringen, det går stødt fremad her bag skærmen
Mvh. Stig