nevermind, tijdens het typen bedacht ik me dat een recursieve functie toch netter is...
dus onderstaande is niet meer interessant...
zal zo mijn recursieve oplossing plaatsen..
-------
er moet een string worden omgezet naar een array. Dit heb ik voor elkaar. Mijn vraag is echter of dit wel de juiste manier is of dat ik op deze manier misschien geheugen-alloceer problemen of iets dergelijks krijg?
ik heb een string:
het aantal levels is van tevoren onbekend.
nu wil ik dit omzetten naar een array:
mijn oplossing is zoals hieronder, by reference:
Mijn vraag is dus of ik nu niet geheugen lokaties overschrijf die "random" problemen gaan geven.
ik vond trouwens ook de volgende oplossing... een stuk korter maar die maakt gebruik van eval, en die spreekt onbekende array_keys direct aan en dat heeft niet echt mijn voorkeur:
wat is best practice? mijn huidige oplossing? de eval-functie? of zal ik maar een recursieve functie schrijven?
dus onderstaande is niet meer interessant...
zal zo mijn recursieve oplossing plaatsen..
-------
er moet een string worden omgezet naar een array. Dit heb ik voor elkaar. Mijn vraag is echter of dit wel de juiste manier is of dat ik op deze manier misschien geheugen-alloceer problemen of iets dergelijks krijg?
ik heb een string:
code:
1
| level1.level2.level3.level4 = 5 |
het aantal levels is van tevoren onbekend.
nu wil ik dit omzetten naar een array:
PHP:
1
| $result["level1"]["level2"]["level3"]["level4"] = 5; |
mijn oplossing is zoals hieronder, by reference:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| $result = array(); $subresult = &$result; $loop = explode(".", $leftofstring); for ($i = 0; $i < count($loop); ++$i) { if ($i == count($loop) -1) { // laatste element $subresult[$loop[$i]] = $value; } else { if (!array_key_exists($loop[$i], $subresult)) { $subresult[$loop[$i]] = array(); } $subresult = &$subresult[$loop[$i]]; } } return $result; |
Mijn vraag is dus of ik nu niet geheugen lokaties overschrijf die "random" problemen gaan geven.
ik vond trouwens ook de volgende oplossing... een stuk korter maar die maakt gebruik van eval, en die spreekt onbekende array_keys direct aan en dat heeft niet echt mijn voorkeur:
code:
1
2
| $code = "\$result[" . join("][", $loop) . "] = \$value";
eval($code); |
wat is best practice? mijn huidige oplossing? de eval-functie? of zal ik maar een recursieve functie schrijven?
[ Voor 9% gewijzigd door P.O. Box op 19-10-2012 16:26 ]