Avatar billede Bjarne Novice
12. februar 2006 - 19:52 Der er 20 kommentarer og
2 løsninger

Variable variabler

Hvordan laver jeg nogle variabler ud fra arrays? Fx:

$var = ("foerste", "anden");
$indhold = ("foerste indhold", "anden indhold");

Således at variablerne:

$foerste_variabel = "foerste indhold";
$anden_variabel = "anden indhold";

bliver lavet?
Det må være noget med variable variabler.

På forhånd tak
Avatar billede Slettet bruger
12. februar 2006 - 20:21 #1
$vars = array('foerste' => 'indhold1', 'anden' => 'indhold2');

foreach($vars as $key => $value) {
${$key} = $value;
}
Avatar billede olebole Juniormester
12. februar 2006 - 20:31 #2
<ole>

$vars = array('foerste' => 'indhold1', 'anden' => 'indhold2');
extract($vars);
print $foerste."<br".$anden;

    http://dk.php.net/manual/da/function.extract.php

/mvh
</bole>
Avatar billede olebole Juniormester
12. februar 2006 - 20:31 #3
- hovsa  =)

print $foerste."<br>".$anden;
Avatar billede erikjacobsen Ekspert
12. februar 2006 - 20:43 #4
Og man bruger ikke variable variabler til noget i praksis. Det giver uoverskuelig kode, med mulighed for sjove fejl. Dvs. de er nok ikke sjove, hvis man lever af at skrive PHP kode. Du skal i stedet for lave et array med navne og værdier. Utestet:

$var = ("foerste", "anden");
$indhold = ("foerste indhold", "anden indhold");
$minevars=Array();
for ($i=0;$i<count($var);$i++) {
  $minevars[$var[$i]] = $indhold{$i];
}

print $minevars["anden"];

På den måde ved du hvor dine navne kommer fra og hvor de bliver brugt. Men det med variable variabler er sjovt, og er det kun det du har brug, skal du se bort fra min kommentar.
Avatar billede Bjarne Novice
12. februar 2006 - 21:15 #5
erikjacobsen: Vil du ikke lige uddybe, hvad du mener med sjove fejl? Hvis vi ser bort fra uoverskueligheden - er der så problemer med at at bruge det?
Avatar billede olebole Juniormester
12. februar 2006 - 21:15 #6
- og ikke mindst i gamle, usikre serveropsætninger (som stadig ses skræmmende ofte) kan det være et seriøst sikkerhedshul  :)
Avatar billede erikjacobsen Ekspert
12. februar 2006 - 21:18 #7
Hvis navne i dit array også er navne på variabler du allerede bruger i anden sammenhæng.
Men du behøver ikke forstå det, bare du lader være med at bruge dem, og gør sådan ca. det jeg foreslår.
Ja, Ole, sikkerhedshuller er også bare så grinagtige.
Avatar billede olebole Juniormester
12. februar 2006 - 21:21 #8
Pointen er, at der kan ligge alle mulige sjove key-navne i et array, som pludselig optræder som selvstændige variabler - i eget navn. Det kan meget vel overskrive andre variabler med samme navn, hvis man ikke er forsigtig.

I mere stringente sprog end PHP er det meget almindeligt, at alle variabler på forhånd skal erklæres, så der er 100% sikkerhed omkring, hvad der optræder i de forskellige scopes - og hvilke typer data, variablerne kan indeholde/repræsentere.
Sådan er det ikke med PHP, der på en række områder er ret 'sloppy'  :)
Avatar billede olebole Juniormester
12. februar 2006 - 21:22 #9
Erik >> Du får en storgrinende én så  :D
Avatar billede Bjarne Novice
12. februar 2006 - 21:32 #10
erikjacobsen: Er det ikke lidt en gammeldags holdning (du behøver ikke forstå det - bare lad vær med at bruge det)? :)

Kan godt se problemet - lægger hovedet i blød for en anden løsning..

I har alle hjulpet, så I er velkomne til at smide et svar :)
Avatar billede erikjacobsen Ekspert
12. februar 2006 - 21:34 #11
Gammeldags? Jo, jeg er født i sidste årtusinde, og har ikke liv nok tilbage til lange debatter. Derfor ;)
Avatar billede olebole Juniormester
12. februar 2006 - 21:41 #12
Eriks løsning ovenfor er da ganske udmærket - og vi er jo i forvejen vandt til at slå variabler op i $_POST, $_GET og alle mulige andre arrays  :)
Avatar billede Slettet bruger
12. februar 2006 - 21:47 #13
Af ren høflighed smider jeg også et svar ;o)
Avatar billede erikjacobsen Ekspert
12. februar 2006 - 21:51 #14
Og nej tak, ingen point til mig. Jeg vil hellere glæde mig over at hjulpet dig i den rigtige retning, i de næste 40-50 år, eller hvad det nu kan blive til *g*
Avatar billede Slettet bruger
12. februar 2006 - 22:21 #15
Tak for point :)
Avatar billede olebole Juniormester
12. februar 2006 - 22:29 #16
Tak for points  :)
Avatar billede Bjarne Novice
12. februar 2006 - 22:49 #17
Tak for hjælpen
Avatar billede horsmark Nybegynder
13. februar 2006 - 07:22 #18
.oO(..mon ham erikjacobsen i virkeligheden er over 70 år?)

*G*
Avatar billede olebole Juniormester
13. februar 2006 - 14:14 #19
Hesten >> Såså ... Erik og jeg er i al væsentlighed jævnaldrende. Selvom det måske kunne lyde, somom vi har suget erfaring og viden til os i flere hundrede år, så er vi altså kun (lige akkurat) i halvtredserne - men tak for smiger  *LooL*
Avatar billede Slettet bruger
13. februar 2006 - 14:19 #20
olebole: Mon det er værd at prale af, at i er jævnaldrende :P
Avatar billede olebole Juniormester
13. februar 2006 - 14:33 #21
Ja, men det varer sikkert mange år, før du forstår, hvorfor  ;o)
Avatar billede Slettet bruger
13. februar 2006 - 17:10 #22
;) sandsynligvis.
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