Toon posts:

[php] Variabele variabelen ok, maar nu met arrays

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik ben aan t puzzelen met een stukje waarmee ik waardes uit een array wil halen. Op zich niet zo moeilijk, maar de opmaak v/d array is onbekend. Het kan dus gewoon een simpele array van 1 dimensie zijn, maar het kan er ook een zijn met meerdere dimensies. Het enige wat zeker is, is dat op elk niveau er evenveel entries zijn.

Dus zoals je hier kan zien:
PHP:
1
<?// $arrayArray(    [0] => Array        (            [0] => a            [1] => b        )    [1] => Array        (            [0] => 1            [1] => 2        ))/*count($array[0]) == count($array[1])Dit geldt ook in gevallen zoalscount($array[0][2][1][0]) == count($array[1][2][1][1]) */?>

Omdat een array dus meerdere levels kan hebben, dacht ik dit te gaan oplossen met variable variabelen.

De volgende code is op zich goed (bovenstaande array als voorbeeld):
PHP:
1
<?$name = "array";echo ${$name}[0][0];// dit geeft netjes a?>

maar omdat [0][0] per array verschilt, moet dat gedeelte dus ook dynamisch.

Na het zoeken kwam ik niet veel verder.

is het mogelijk om die [0][0] ook uit een variable uit te lezen a la:
PHP:
1
<?// onderstaande code werkt niet$name = "array";$index = "[0][0]";echo ${$name}$index; // dit kan dus niet?>

of vraag ik iets wat php 's niet kan? :P

Verwijderd

PHP:
1
<?/* zou niet weten of het werkt is maar een ideetje */$arrayname    = "array";     // welke array ?$indexone     = "0";         // heh wat ?$indextwo     = "0";         // ow dat :)echo ${$name}[$indexone][$indextwo];     // zou dit werken ??>

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 09-09 11:02
Waarschijnlijk kom je er met deze voorbeeldcode (die iets algemener is dan wat jij wilt) wel uit:
[php]<?Waarschijnlijk kom je er met deze voorbeeldcode (die iets algemener is dan wat jij wilt) wel uit:
PHP:
1
<?$a = array (        "blaat",        array (                "abc",                "def",                array ("x","y","z")        ),        "bladiebla");function doe($keys,$a){        if(is_array($a))                foreach ($a as $k=>$v)                {                        $ks=$keys; $ks[]=$k;                        doe($ks,$v);                }        else        {                foreach ($keys as $k)                        print "[$k]";                print " = $a<br>";        }}doe(array(),$a);?>

Overigens zal je in veel gevallen je keys helemaal niet willen onthouden (wat het algoritme veel eenvoudiger maakt). Dat hangt er een beetje van af wat je er mee wilt.

Verwijderd

eval("echo \${$name}$index;");

Verwijderd

Topicstarter
Op dinsdag 09 april 2002 12:54 schreef Tuin het volgende:
PHP:
1
<?/* zou niet weten of het werkt is maar een ideetje */$arrayname    = "array";     // welke array ?$indexone     = "0";         // heh wat ?$indextwo     = "0";         // ow dat :)echo ${$name}[$indexone][$indextwo];     // zou dit werken ??>
nope, want ik weet niet van te voren hoeveel index-en er zijn.

edit:
de andere reacties moet ik nog ff testen (zit nu weer thuis ipv op werk :P

Verwijderd

Op dinsdag 09 april 2002 13:29 schreef DarthRaider het volgende:

[..]

nope, want ik weet niet van te voren hoeveel index-en er zijn.

edit:
de andere reacties moet ik nog ff testen (zit nu weer thuis ipv op werk :P
Kun je die dan niet tellen met een loopje?
Gewoon doorgaan totie niet meer kan.
Dan weet je hoeveel indexen er zijn.

Verwijderd

Topicstarter
Op dinsdag 09 april 2002 13:14 schreef TimD het volgende:
eval("echo \${$name}$index;");
da's een goeie :P met eval... zo kom ik er (samen met soultakers code) wel uit ja :)

thx all!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 09-09 11:02
Op dinsdag 09 april 2002 13:46 schreef DarthRaider het volgende:
da's een goeie :P met eval...
eval Is nooit goed en eigenlijk zelden vereist. Meestal kun je het wel op een meer correcte manier oplossen.
Pagina: 1