/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Variable Variabler og arrays..
Fra : Stig Nørgaard Jepsen


Dato : 13-08-01 18:04

$testvar[arr] = "DET-DER-DU";
$varnavn = "testvar[arr]";
echo $$varnavn . "-teste<br>";

$testo = "DET-DER-DU";
$vari = "testo";
echo $$vari . "-testa<br>";

Hvorfor virke det øverste eksempel ikke, når det nederste gør? :)




 
 
Jacob Bunk Nielsen (13-08-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 13-08-01 18:43

"Stig Nørgaard Jepsen" <stigen@mail.dk> writes:

> $testvar[arr] = "DET-DER-DU";
> $varnavn = "testvar[arr]";
> echo $$varnavn . "-teste<br>";

Her udskriver du i virkeligheden "$DET-DER-DU-teste<br>". Variablen
$DET-DER-DU er ikke defineret, så det expander til "-teste<br>". Hvis
man da overhovedet kan bruge konstruktionen $$varnavn når $varnavn er
noget der ligner et array.

> $testo = "DET-DER-DU";
> $vari = "testo";
> echo $$vari . "-testa<br>";

Her udskriver du i virkeligheden "$testo-testa<br>", som expander til
"DET-DER-DU-testa<br>".

> Hvorfor virke det øverste eksempel ikke, når det nederste gør? :)

Det håber jeg at jeg har forklaret

--
Jacob
The real world is a special case.

Min Emacs-agtige hjemmeside: http://www.bunk.cc

Stig Nørgaard Jepsen (13-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 13-08-01 18:50


"Jacob Bunk Nielsen" <spam@bunk.cc> wrote in message
news:m33d6vsvow.fsf@paven.bunk.cc...
> "Stig Nørgaard Jepsen" <stigen@mail.dk> writes:
>
> > $testvar[arr] = "DET-DER-DU";
> > $varnavn = "testvar[arr]";
> > echo $$varnavn . "-teste<br>";
>
> Her udskriver du i virkeligheden "$DET-DER-DU-teste<br>". Variablen
> $DET-DER-DU er ikke defineret, så det expander til "-teste<br>". Hvis
> man da overhovedet kan bruge konstruktionen $$varnavn når $varnavn er
> noget der ligner et array.
>
> > $testo = "DET-DER-DU";
> > $vari = "testo";
> > echo $$vari . "-testa<br>";
>
> Her udskriver du i virkeligheden "$testo-testa<br>", som expander til
> "DET-DER-DU-testa<br>".
>
> > Hvorfor virke det øverste eksempel ikke, når det nederste gør? :)
>
> Det håber jeg at jeg har forklaret

Ja, tak!

Nogen løsning - anyone?



Bee (13-08-2001)
Kommentar
Fra : Bee


Dato : 13-08-01 19:07

>
> Ja, tak!
>
> Nogen løsning - anyone?
>
>

Jeg er ikke helt med på hvad det er du vil????

Men hvis du sletter et "$" i $$varnavn, så virker de på samme måde.....

$testvar[arr] = "DET-DER-DU";
$varnavn = $testvar[arr];
echo $varnavn . "-teste<br>";

$testo = "DET-DER-DU";
$vari = "testo";
echo $$vari . "-testa<br>";

Bee


"Stig Nørgaard Jepsen" <stigen@mail.dk> skrev i en meddelelse
news:3b781332$0$296$edfadb0f@dspool01.news.tele.dk...
>
> "Jacob Bunk Nielsen" <spam@bunk.cc> wrote in message
> news:m33d6vsvow.fsf@paven.bunk.cc...
> > "Stig Nørgaard Jepsen" <stigen@mail.dk> writes:
> >
> > > $testvar[arr] = "DET-DER-DU";
> > > $varnavn = "testvar[arr]";
> > > echo $$varnavn . "-teste<br>";
> >
> > Her udskriver du i virkeligheden "$DET-DER-DU-teste<br>". Variablen
> > $DET-DER-DU er ikke defineret, så det expander til "-teste<br>". Hvis
> > man da overhovedet kan bruge konstruktionen $$varnavn når $varnavn er
> > noget der ligner et array.
> >
> > > $testo = "DET-DER-DU";
> > > $vari = "testo";
> > > echo $$vari . "-testa<br>";
> >
> > Her udskriver du i virkeligheden "$testo-testa<br>", som expander til
> > "DET-DER-DU-testa<br>".
> >
> > > Hvorfor virke det øverste eksempel ikke, når det nederste gør? :)
> >
> > Det håber jeg at jeg har forklaret
>
> Ja, tak!
>
> Nogen løsning - anyone?
>
>



Jacob Bunk Nielsen (13-08-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 13-08-01 19:26

"Bee" <bee@bee.dk> writes:

> Men hvis du sletter et "$" i $$varnavn, så virker de på samme måde.....

Nej!

> $varnavn = $testvar[arr];

Hov hov! Det var ikke det der stod.

I øvrigt ville det være et hit, hvis du kigger lidt på
<http://www.usenet.dk/netikette/quote.html>, da det så vil være
lettere at se hvad du svarer på, og skrive svar til dine indlæg.

--
Jacob
The truth is out there? Anyone knows the URL?

Min Emacs-agtige hjemmeside: http://www.bunk.cc

Stig Nørgaard Jepsen (13-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 13-08-01 19:30

> Jeg er ikke helt med på hvad det er du vil????
>
> Men hvis du sletter et "$" i $$varnavn, så virker de på samme måde.....
>
> $testvar[arr] = "DET-DER-DU";
> $varnavn = $testvar[arr];
> echo $varnavn . "-teste<br>";
>
> $testo = "DET-DER-DU";
> $vari = "testo";
> echo $$vari . "-testa<br>";
>

Nej så udskriver den:
testvar[arr]-teste
og ikke:
DET-DER-DU

Mvh Stig





Jakob Kirkegaard (14-08-2001)
Kommentar
Fra : Jakob Kirkegaard


Dato : 14-08-01 10:27

Stig Nørgaard Jepsen wrote:
>> Jeg er ikke helt med på hvad det er du vil????
>>
>> Men hvis du sletter et "$" i $$varnavn, så virker de på samme
>> måde.....
>>
>> $testvar[arr] = "DET-DER-DU";
>> $varnavn = $testvar[arr];
>> echo $varnavn . "-teste<br>";
>>
>> $testo = "DET-DER-DU";
>> $vari = "testo";
>> echo $$vari . "-testa<br>";

Jeg må indrømme at jeg ikke helt er med på hvad du vil - men hvad med
at prøve at droppe subscriptet i 2. linje af dit array eks., således
det bliver:

$testvar[arr] = "DET-DER-DU";
$varnavn = testvar;
echo ${$varnavn}[arr] . "-teste<br>";

Når man benytter variable variablenavne i forbindelse med array navne.
Skal man være opmærksom på følgende, som omtales i manualen.

<snip manual>
In order to use variable variables with arrays, you have to resolve an
ambiguity problem. That is, if you write $$a[1] then the parser needs
to know if you meant to use $a[1] as a variable, or if you wanted $$a
as the variable and then the [1] index from that variable. The syntax
for resolving this ambiguity is: ${$a[1]} for the first case and$
{$a}[1] for the second.
</snip manual>

--
mvh Jakob Kirkegaard

Jacob Bunk Nielsen (13-08-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 13-08-01 19:19

"Stig Nørgaard Jepsen" <stigen@mail.dk> writes:

> Nogen løsning - anyone?

Løsning på hvad?

Hvad vil du opnå?

--
Jacob
If it wasn't for C, we would be using BASI, PASAL, and OBOL.

Min Emacs-agtige hjemmeside: http://www.bunk.cc

Stig Nørgaard Jepsen (13-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 13-08-01 19:33


"Jacob Bunk Nielsen" <spam@bunk.cc> wrote in message
news:m3wv47rfg1.fsf@paven.bunk.cc...
> "Stig Nørgaard Jepsen" <stigen@mail.dk> writes:
>
> > Nogen løsning - anyone?
>
> Løsning på hvad?
>
> Hvad vil du opnå?

Jo ser du :) Nu vil jeg prøve at forklare mig:

Jeg har en array:
$testvar[arr] = "DET-DER-DU";

Jeg har navnet på array'en i variabel:
$varnavn = "testvar[arr]";

Med denne variabel vil jeg meget gerne udskrive indeholdet af den navngivne
array:
echo $$varnavn . "-teste<br>";

Det kunne altså være rart med et output der lød:
DET-DER-DU


Kan det lade sig gøre?

Mvh Stig




Bee (13-08-2001)
Kommentar
Fra : Bee


Dato : 13-08-01 19:50

>"Bee" <bee@bee.dk> writes:
>
>> Men hvis du sletter et "$" i $$varnavn, så virker de på samme måde.....
>
>Nej!
>
>> $varnavn = $testvar[arr];
>

Det jeg mente var at outputtet var ens!!!!
Jeg forstår stadig ikke hvad det er du vil opnå ?????

Dit output kommer aldrig til kun at bestå af "DET DER DU" eftersom der står
.. "teste<br>" bagefter

Hvis det er indholdet af et array du vil udskrive kan du eksempelvis benytte
funktionen "implode",

$varnavn = implode (" ",$testvar)

Husk evt. at nulstille array'et først

Bee





"Stig Nørgaard Jepsen" <stigen@mail.dk> skrev i en meddelelse
news:3b781d5b$0$345$edfadb0f@dspool01.news.tele.dk...
>
> "Jacob Bunk Nielsen" <spam@bunk.cc> wrote in message
> news:m3wv47rfg1.fsf@paven.bunk.cc...
> > "Stig Nørgaard Jepsen" <stigen@mail.dk> writes:
> >
> > > Nogen løsning - anyone?
> >
> > Løsning på hvad?
> >
> > Hvad vil du opnå?
>
> Jo ser du :) Nu vil jeg prøve at forklare mig:
>
> Jeg har en array:
> $testvar[arr] = "DET-DER-DU";
>
> Jeg har navnet på array'en i variabel:
> $varnavn = "testvar[arr]";
>
> Med denne variabel vil jeg meget gerne udskrive indeholdet af den
navngivne
> array:
> echo $$varnavn . "-teste<br>";
>
> Det kunne altså være rart med et output der lød:
> DET-DER-DU
>
>
> Kan det lade sig gøre?
>
> Mvh Stig
>
>
>



Jacob Bunk Nielsen (13-08-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 13-08-01 20:29

"Bee" <bee@bee.dk> writes:

> >> Men hvis du sletter et "$" i $$varnavn, så virker de på samme måde.....
> >
> >Nej!
> >
> >> $varnavn = $testvar[arr];
>
> Det jeg mente var at outputtet var ens!!!!

Ja, når du retter lidt til i koden, men du skrev noget andet end Stig.

> Jeg forstår stadig ikke hvad det er du vil opnå ?????

Det er Stig der vil opnå noget. Ovenstående ligner et svar på et
indlæg jeg har skrevet, og er det muligvis ikke alligevel.

Det ville være fedt, hvis du vil svare under det du citerer, og klippe
resten væk. Dernæst vil det være rart, hvis du svarer på det indlæg du
har en kommetar til, og ikke et andet indlæg, så man får en fornuftig
tråd.

--
Jacob
It's not a lie. It's just a very special kind of truth.

Min Emacs-agtige hjemmeside: http://www.bunk.cc

Bee (13-08-2001)
Kommentar
Fra : Bee


Dato : 13-08-01 20:56

Hej Jakob

Det kan da godt være at jeg efter din menning besvarer spørgsmålet på en
sådan måde, at du fik opfattelsen af at det var et af dine tidligere indlæg
jeg forsøgte at besvare. Men jeg læste såmen bare ned igennem stakken, og så
vidt jeg kan se er det Stig, der har startet dette indlæg, og jeg tog det
for givet at det er ham jeg besvarede!

Jeg beklager meget at du misforstod!

Bee


"Jacob Bunk Nielsen" <spam@bunk.cc> skrev i en meddelelse
news:m3k807rc76.fsf@paven.bunk.cc...
> "Bee" <bee@bee.dk> writes:
>
> > >> Men hvis du sletter et "$" i $$varnavn, så virker de på samme
måde.....
> > >
> > >Nej!
> > >
> > >> $varnavn = $testvar[arr];
> >
> > Det jeg mente var at outputtet var ens!!!!
>
> Ja, når du retter lidt til i koden, men du skrev noget andet end Stig.
>
> > Jeg forstår stadig ikke hvad det er du vil opnå ?????
>
> Det er Stig der vil opnå noget. Ovenstående ligner et svar på et
> indlæg jeg har skrevet, og er det muligvis ikke alligevel.
>
> Det ville være fedt, hvis du vil svare under det du citerer, og klippe
> resten væk. Dernæst vil det være rart, hvis du svarer på det indlæg du
> har en kommetar til, og ikke et andet indlæg, så man får en fornuftig
> tråd.
>
> --
> Jacob
> It's not a lie. It's just a very special kind of truth.
>
> Min Emacs-agtige hjemmeside: http://www.bunk.cc



Jacob Bunk Nielsen (13-08-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 13-08-01 21:23

"Bee" <bee@bee.dk> writes:

> Hej Jakob

Hvem? Jeg hedder Jacob med 'c'

> Det kan da godt være at jeg efter din menning besvarer spørgsmålet på en
> sådan måde, at du fik opfattelsen af at det var et af dine tidligere indlæg
> jeg forsøgte at besvare. Men jeg læste såmen bare ned igennem stakken, og så
> vidt jeg kan se er det Stig, der har startet dette indlæg, og jeg tog det
> for givet at det er ham jeg besvarede!

Hvis du kun citerer tekst fra det indlæg du besvarer, så er det meget
lettere at se hvad du svarer på. Du havde tydeligvis citeret tekst fra
et indlæg i en anden del af tråden, som ikke var fra det indlæg du
svarede på.

Samtidig ville jeg (stadig) ønske at du gad læse lidt på
<http://www.usenet.dk/netikette/quote.html>, hvor der står beskrevet
hvorfor det er godt at svare *under* det du svarer på, og klippe
unødig tekst væk.

--
Jacob
If at first you do succeed, try to hide your astonishment.

Min Emacs-agtige hjemmeside: http://www.bunk.cc

Lars Petersen (13-08-2001)
Kommentar
Fra : Lars Petersen


Dato : 13-08-01 20:08

> Jo ser du :) Nu vil jeg prøve at forklare mig:
>
> Jeg har en array:
> $testvar[arr] = "DET-DER-DU";
>
> Jeg har navnet på array'en i variabel:
> $varnavn = "testvar[arr]";
>
> Med denne variabel vil jeg meget gerne udskrive indeholdet af den
navngivne
> array:
> echo $$varnavn . "-teste<br>";
>
> Det kunne altså være rart med et output der lød:
> DET-DER-DU

Fatter det heller ikke... Men her:

$testvar[arr] = "DET-DER-DU";
$varnavn = "testvar[arr]";
eval("echo \$$varnavn . '-teste<br>';");


--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
When mailing me, remember there is no truth in my mail!



Stig Nørgaard Jepsen (13-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 13-08-01 21:14

> > Jo ser du :) Nu vil jeg prøve at forklare mig:
> >
> > Jeg har en array:
> > $testvar[arr] = "DET-DER-DU";
> >
> > Jeg har navnet på array'en i variabel:
> > $varnavn = "testvar[arr]";
> >
> > Med denne variabel vil jeg meget gerne udskrive indeholdet af den
> navngivne
> > array:
> > echo $$varnavn . "-teste<br>";
> >
> > Det kunne altså være rart med et output der lød:
> > DET-DER-DU
>
> Fatter det heller ikke... Men her:
>
> $testvar[arr] = "DET-DER-DU";
> $varnavn = "testvar[arr]";
> eval("echo \$$varnavn . '-teste<br>';");

Perfekt! Det virker! Fedt! Du er en helt!

Grunden til alt dette er... en lang forklaring! Som prøves gjort kort:

Jeg har en tabel i en Database hvor jeg trækker en helt masse funktions
udtryk ud.
fx. textinput(form[User],"20","12"); - hvor form[User] så er
variabel-navnet på den form som funktionen laver.
Grunden til at jeg bruger en array og ikke bare en variabel som fx. $User,
er at jeg med sessions bliver fri for at registrere alle de enkelte
variabler og kan nøjes med registrering af array'en (her er array $form).

Jeg prøvede bare at simplificere problemet lidt ved kun at fortælle om selve
problemet.

Det lyder sikkert stadigvæk indviklet, men håber at der er nogen der har
forstået.

Mvh Stig




Stig Nørgaard Jepsen (14-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 14-08-01 07:32


"Stig Nørgaard Jepsen" <stigen@mail.dk> wrote in message
news:3b7834f2$0$253$edfadb0f@dspool01.news.tele.dk...
> > > Jo ser du :) Nu vil jeg prøve at forklare mig:
> > >
> > > Jeg har en array:
> > > $testvar[arr] = "DET-DER-DU";
> > >
> > > Jeg har navnet på array'en i variabel:
> > > $varnavn = "testvar[arr]";
> > >
> > > Med denne variabel vil jeg meget gerne udskrive indeholdet af den
> > navngivne
> > > array:
> > > echo $$varnavn . "-teste<br>";
> > >
> > > Det kunne altså være rart med et output der lød:
> > > DET-DER-DU
> >
> > Fatter det heller ikke... Men her:
> >
> > $testvar[arr] = "DET-DER-DU";
> > $varnavn = "testvar[arr]";
> > eval("echo \$$varnavn . '-teste<br>';");
>
> Perfekt! Det virker! Fedt! Du er en helt!

Men kun en lille helt.
Det virker nemlig ikke helt i mit eksempel. Problemet er at man åbenbart
ikke kan køre en eval inden i en function som selv bliver eval'et. Heh...
måske skulle jeg bare prøve et helt andet design på dette script - det er
nok lidt nemmere...
Men tak for hjælpen anyway!


Mvh Stig



Jacob Bunk Nielsen (13-08-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 13-08-01 20:41

"Stig Nørgaard Jepsen" <stigen@mail.dk> writes:

> Jeg har en array:
> $testvar[arr] = "DET-DER-DU";
> $varnavn = "testvar[arr]";
> echo $$varnavn . "-teste<br>";
>
> Det kunne altså være rart med et output der lød:
> DET-DER-DU
>
> Kan det lade sig gøre?

Nej, desværre ikke så vidt jeg lige ved og kan se i manualen.
Hvad er grunden til at du har et array?

Hvis der ikke er nogen tungtvejende argument kan du måske i stedet
bruge:

$var_1 = "noget";
$var_2 = "noget andet";

.... og så læse dem som:

$varname = "var_" . 1;
print($$varname);
$varname = "var_" . 2;
print("$$varname);

Så kan du erstatte '1' og '2' med en variabel i en løkke i stil med:

for ($i=1; $i < $en_max_vaerdi; $i++) {
$varname = "var_" . $i;
print($$varname);
}

Hvis det ikke er noget i den retning du ønsker at opnå, så må du vist
leve med at det ikke kan lade sig gøre. At lave det stunt med et array
svarer jo også til at lave noget i retning af $$$varname.

--
Jacob
But I can't upgrade my kernel, I've got some mad uptime!

Min Emacs-agtige hjemmeside: http://www.bunk.cc

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste