[PHP] variabele naam variabele *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 22:13
Ik ben bezig met een script en gebruik daarbij een paar vage constructies omdat mij het op die manier het makkelijkst leek..

een stukje script is:
PHP:
1
2
3
4
foreach ($controleer as $kolom) {
echo ("kolom: $kolom $$kolom"); // echo om te testen
if ("$$kolom"=="on"){
$result=mysql_query("select id, $kolom "....

$controleer is een array, bestaanden uit een serie checkboxen op de pagina die hierheen submit, de verschillende waarde hieruit worden voorgesteld als $kolom -> dit gaat goed
nu wil ik checken of de checkbox van het formulier dat naar deze pagina (super global dingen staan on, dus maak geen gebruikt van $_post....) stuurt aangevinkt was; dus de code if ("checkboxnaam"=="on")

het probleem $$kolom wordt niet vervangen door (bijv) de waarde $coach maar door letterlijk $coach
code:
1
echo ("kolom: $kolom $$kolom");
levert dan ook
kolom waarde: coach $coach
op

Iets zegt mij dat ik hier ergens een keer iets over gelezen heb, dat dit hoort enzo, maar ik vind dat dus niet zo leuk }) wat kan ik er aan doen??

(search kon ik niets vinden, dit komt mede doordat zoeken op $$ niets doet)
(een ander verwant probleem dat ik heb ->
PHP:
1
2
3
foreach ($array as $zoek) {
echo ("$zoekgezocht"); //zoek is bijv blaat
}
geeft blaatgezocht ipv de bestaande waarde van $blaatgezocht =nee)

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 19:38
Hmm, laat ik twee dingen zeggen:

Variabele variabelen zijn enorm ranzig
Zet variabelen niet tussen " tekens

|>


Acties:
  • 0 Henk 'm!

Verwijderd

Zet er eens {..} rond.

PHP:
1
2
3
4
$test = "var";
$var = "print mij";

echo ${$test};


En als je variabelen in een string wil afprinten, sluit je ofwel je string af, ofwel doe je wat ik hierboven zei: { } errond gooien.

Bijvoorbeeld:

PHP:
1
echo "Ik wil graag de waarde van " . ${$test};
of
PHP:
1
echo "Ik wil graag de waarde van {${$test}}";


(ps: of die binnenste {..} nodig is, dat weet ik niet heel zeker, maar ik denk dat het zo en alleen zo moet volgens de syntax)

[ Voor 133% gewijzigd door Verwijderd op 23-06-2003 22:17 ]


Acties:
  • 0 Henk 'm!

  • ReLight
  • Registratie: Augustus 2001
  • Laatst online: 16-09 09:32

ReLight

echo("What Now ? !")

Het wordt 'dirty' genoemd, maar EVAL is een oplossing.
EVAL werkt eigenlijk net als ECHO, maar parsed de dan gevormde string nog eens.

$zoek="blaat";
$blaatgezocht="nee";
eval ("echo(\"\$".$zoek."gezocht\");");

Je escaped de " en $ die de 2e keer verwerkt dient te worden dus met \

->www.php.net

[ Voor 17% gewijzigd door ReLight op 23-06-2003 22:21 . Reden: foutje in voorbeeld... ]

Mijn zoon & dochter zijn de toekomst, de rest is tijdsvermaak. Home assistant & & Nibe S2125-12/SMO-S40, RMU-s40 & Tado - Volvo C40 ER, SE


Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 22:13
Verwijderd schreef op 23 juni 2003 @ 22:13:
Zet er eens {..} rond.

PHP:
1
2
3
4
$test = "var";
$var = "print mij";

echo ${$test};
thank, that's just what I needed _o_\


edit:
ik was al aan het testen voor ik je php code erbij gelezen had (te snel, te veel het idee dat het idd was wat ik zocht en {$$test} ipv ${$test} lijkt ook te werken

==> dit werkt toch minder goed iig in mijn if vergelijking niet dus ik houdt het maar bij ${$var}

[ Voor 49% gewijzigd door pietje63 op 23-06-2003 22:25 ]

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

Verwijderd

pietje63 schreef op 23 June 2003 @ 22:17:
[...]


thank, that's just what I needed _o_
Graag gedaan. Ik had ondertussen nog snel een edit gedaan, voor hoe je het nu eigenlijk moet afprinten in een string. Maar dat heb je zo te zien zelf gevonden ondertussen ;)

edit:

{$$test} is nooit de bedoeling, dat is zinloos. Het is (volgens mij) ${$test}, en als je dat op zijn beurt wilt outputten in een string (dus niet in een if-test, of wat dan ook), forceer je dat nogmaals door er weer {} rond te gooien.

{} doet niets meer als forceren!

[ Voor 33% gewijzigd door Verwijderd op 23-06-2003 22:30 . Reden: en we blijven editen? :) ]

Pagina: 1