Hallo.
Als ik bijvoorbeeld deze waarde heb.

$A3=17;
$X="A";
$Y=3;

Hoe kan ik er dan voor zorgen dat ik met alleen het gebruik van $X en $Y 17 op mijn beeldscherm krijg?
Je wilt dus variabele variabelen gebruiken? Met welke reden?
Ik ben bezig met een spelletje maken, met een database met veel data, en er moeten meerdere variabelen ingevoerd kunnen worden. En op deze manier leek het me sneller dan if($X=="A").... 10000x schrijven.

Maar dit is dus niet handig?
Kan je dan niet beter met een array werken?
Dan heb je een nette 'boom' aan gestructureerde gegevens. En die kan je ook eenvoudig uitlezen.

$data = [];
$data['pietje']['game'] = "Yatsee";
$data['pietje']['spelmode'] = "expert";
$data['karel']['game'] = "Phase 10";
$data['karel']['spelmode'] = "beginner";
Maar het kan wel! ;-)

$var = $X . $Y; /naam van var die je wilt - in dit geval 'A3'
print($$var); //let op: dubbele dollar = de variabele met de naam die in $var staat

Maar voor de zekerheid: ik zou het niet aanraden. Dit snap je nu, maar als je hier over een paar weken nog eens naar kijkt dan vraag je je af wat je die avond gedronken had ...
Het ding is dat ik meer variabelen dan dat heb.
Ook op deze manier zou ik elke combinatie zelf moeten uitschrijven.
Maar wat ik dus vroeg gaat niet zo makkelijk als ik dacht volgens mij. Ik ga even goed nadenken wat dan de beste oplossing is.

[size=xsmall]Toevoeging op 08/02/2020 17:44:58:[/size]

Haha dank je Rob :D ga dit toch uittesten
Als dit een tweedimensionaal vlak is dan zou een matrix (tweedimensionaal array) een voor de hand liggende aanpak zijn.

Het concateneren van waarden van variabelen, waarbij je een soort betekenis verankert in deze naamgeving, lijkt mij geen goed idee. Het belemmert de leesbaarheid, je creëert een heleboel variabelen in de huidige (globale?) scope en het helpt debugging ook niet echt.

In het voorstel van @Rob wordt ook in zekere zin code geëvalueerd, en mogelijk kun je daar een heleboel ongein mee uithalen als je alles niet heel erg nauwkeuring inspecteert/valideert. Ik zou wegsturen van zo'n aanpak.

Toegegeven, het kan inderdaad, maar of dit een goed idee is? Niet bepaald.
De manier van Rob werkt perfect voor mijn situatie.
Ga hier toch mee door,
Hoop dat ik over een tijdje inderdaad lachend terugkijk en een passende manier weet toe te passen.
Maar dit is een vrijetijd-projectje. Dus niemand zal mijn steenkolenphptaal lezen :D
Allemaal enorm bedankt voor de tips en de lach :)
Niemand zal het lezen, maar snap je het nog over een paar maanden?

Reageren