trondes Skrevet 22. mars 2006 Rapporter Del Skrevet 22. mars 2006 litt kode: $conf['bruker']['fornavn'] = "Trond"; // det jeg vil er å få til slik: ( dette går ikke, men i teorien ser det bra ut ) $array = "[bruker][fornavn]; $conf$array = "Trond"; Lenke til kommentar
Gjest Slettet+1374861 Skrevet 22. mars 2006 Rapporter Del Skrevet 22. mars 2006 griper ikke helt hva du vil, men er det en type explode du ser etter? (blir litt fjern når man døgner) http://no.php.net/manual/en/function.explode.php hvis det var helt feil så får du flame'e meg. Lenke til kommentar
trondes Skrevet 22. mars 2006 Forfatter Rapporter Del Skrevet 22. mars 2006 (endret) hehe.. skal ikke flame deg sikkert dårlig forklart.. slik kan jeg gjør: $a = "test"; $b = "tull"; $c[$a][$b] = "123"; print $c['test']['tull']; // skriver ut: 123 Men jeg vil $a = "[test][tull]"; $c$a = "123"; print $c$a; EDIT: skrive feil Endret 22. mars 2006 av trondes Lenke til kommentar
kakkle Skrevet 22. mars 2006 Rapporter Del Skrevet 22. mars 2006 (endret) Jeg ser hva du mener... Det er mulig å få til ved bruk av eval, da... Men det erjo eval, da (Skummelt) Det er den måten jeg kommer på i farten nå... <? $array = "[bruker][fornavn]"; eval("\$conf$array = \"Trond\";"); echo $conf[bruker][fornavn]; // Gir Trond echo $conf$array // Gir kompileringsfeil eval("echo \$conf$array.\"<br>\";"); // Gir Trond ?> Men som sagt så er det ikke veldig anbefalt å bruke eval. Da må du isåfall være HELT sikker på hva du kjører inn i funksjonen. Men hvorfor vil du gjøre det på denne måten ? EDIT: En annen sak du kan se på, men som ikke vil funke som array, på en måte: <? $array = "[bruker][fornavn]"; $conf{$array} = "Trond"; echo $conf[bruker][fornavn]."<br>"; // Gir ingenting echo $conf{$array}; // Gir Trond ?> Endret 22. mars 2006 av kakkle Lenke til kommentar
MC2 Skrevet 22. mars 2006 Rapporter Del Skrevet 22. mars 2006 mulig jeg misforstår deg litt, men er ikke array_flip noe av det du er ute etter? Lenke til kommentar
stiber Skrevet 22. mars 2006 Rapporter Del Skrevet 22. mars 2006 Tror jeg har forstått problemet, og tror jeg har en løsning på problemet. (Som ikke bruker eval, selv om det også er mulig, men ikke anbefalt som kakkle selv sier.) <?php $address = array('bruker','fornavn'); $value = 'Trond'; $conf = array(); setArrayDeep($address,$conf,$value); print_r($conf); print getArrayDeep($address,$conf); function setArrayDeep($address,&$array,$value) { $key = array_shift($address); if(!empty($address)) { $array[$key] = array(); setArrayDeep($address,$array[$key],$value); } else { $array[$key] = $value; } } function getArrayDeep($address,$array) { $key = array_shift($address); if(!empty($address)) { return getArrayDeep($address,$array[$key]); } else { return $array[$key]; } } ?> Det bør legges til en del sjekking av variabler i funksjonene. Deriblant om $address og $array virkelig er arrays. Lenke til kommentar
trondes Skrevet 22. mars 2006 Forfatter Rapporter Del Skrevet 22. mars 2006 En fin kode det, men det jeg var på jakt etter var om det var en function eller noe lignende som løste problemet. Problemeter, at jeg sammen med brukeren lagrer denne config strengen: "nyhet|prside|10;bruker|passord|ja;nyhet|vis|ingress" for å hente ut dette kjører jeg dette: // blir lest fra database, lagre sammen med resten av dataen om brukeren $bruker_conf = "nyhet|prside|10;bruker|passord|ja;nyhet|vis|ingress"; $conf = mk_conf( $bruker_conf); print $conf['nyhet']['prside']; // skriver ut: 10 function mk_conf( $bruker_conf){ $tmp = explode(";",$bruker_conf); if(is_array($tmp)){ foreach($tmp as $tmp2) { list( $modulnavn, $confnavn, $innhold) = explode("|",$tmp2); $conf_array[$modulnavn][$confnavn] = $innhold; } } return $conf_array; } Det jeg var på jakt etter var en enklere måte å løse dette på. Kan ikke løse seg faste i den samme gamle tingen Lenke til kommentar
stiber Skrevet 22. mars 2006 Rapporter Del Skrevet 22. mars 2006 Kan du ikke bruke serialize() og unserialize() da? Lenke til kommentar
trondes Skrevet 22. mars 2006 Forfatter Rapporter Del Skrevet 22. mars 2006 Aha.. perfekt lært noe nytt i dag også... men, *ser litt sint på stiber* hvorfor har du ikke sagt dette før ? feks noen år siden ? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå