Archief - PHP: variabele variabelen en arrays

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

SideShow

Legacy Member
PHP:
$cats=array("","Bussen","Draadproducten");
$tmp=$cats[$_GET['c']];

$Bussen=array("","Inox","Koper","Aluminium","Huisnummers","Maatwerk","Referenties");
$Draadproducten=array("","Inox","Tangen & clipsen","Voorraad");

echo "Categorie: ". $tmp ."\nSoort: " . $$tmp[$_GET['id']];

Laat ons zeggen dat c bijvoorbeeld 1 is en id is 2.
Ik wil dus bekomen:
Categorie: Bussen
Soort: Koper


Dit werkt niet omdat er een probleem is met die $$ syntax. Volgens mij is dit omdat PHP op dat moment nog niet weet dat de string uit $cats die je ook gebruikt als variabele eigenlijk een array is.

Iemand een oplossing of work around ?

SideShow

Legacy Member
mja, inderdaad daar staat het

(php.net ging traag, heb dan ff geprobeerd op google maar vond het nie direct :$

anywee ty

Obliv`

Legacy Member
wat is het nut van de eerste positie in uw array leeg te laten??

ken geen ballen van php dus alsek een domme opmerking heb gegeve, my bad dan :)

zero2one

Legacy Member
Obliv` zei:
wat is het nut van de eerste positie in uw array leeg te laten??

Waarschijnlijk wil hij bereiken dat de 1ste value in de array op index 1 staat maar daar is een veel properdere versie voor:
PHP:
$Bussen=array(1=>"Inox","Koper","Aluminium","Huisnummers","Maatwerk","Referenties");

en dit zou de oplossing moeten zijn voor het probleem:
PHP:
echo "Categorie: ". $tmp ."\nSoort: " . ${$tmp}[$_GET['id']];

SideShow

Legacy Member
jup dat is de reden
ik gebruik de 0 index voor een beschrijving bvb
$Bussen=array("Dit zijn brievenbussen","Inox","Koper"...
En als ik ID=1 heb wil ik natuurlijk inox hebben, dus het komt wel handig uit op deze manier

vempire

Legacy Member
zelf vermijd ik het gebruiken van arrays (vaag opverblijfsel uit c :p)en zouik dit gewoon doen met een mysql tabelletje. Is dat niet veel gemakklijker, ook met oog op uitbruiding van je gegevens in de toekomst?

killgore

Legacy Member
DarkBone zei:
http://be2.php.net/language.variables.variable

Heb je dit wel gelezen?
Meerbepaald onderaan (vlak boven de comments)...

Bij $$tmp[id] weet PHP niet of hij $$tmp als array moet zien, of als hij $tmp als array moet zien om daarop vervolgens de extra $ toe te passen.
${$tmp[id]} of ${$tmp}[id]

should do the trick i think ;)

edit: vempire: bs, ge gaat arrays toch nie vervangen door mysql tabellen, das echt dikste bullshit dak ooit gehoord heb. (trouwens, mysql data fetcht ge meestal in arrays).

Ook variabele vars vermijdt je imho het best, enkel in dynamisch gebouwde code (met eval-functie en zo) zie ik hier 'nuttige' toepassingen in.

SideShow

Legacy Member
mja, onze klant wil geen database en betaalt er dus ook niet voor

en persoonlijk vind ik een array met een paar stringskes erin inderdaad wel simpeler dan expres daarvoor met database werken ... :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan