djtoz | Salut,
j'ai une structure de type HoHoHoH... de profondeur inconnue, exemple:
Code :
- $toto = {
- key1 => {
- key2 => {
- param1 => value1,
- param2 => value2,
- },
- * => {
- param3 => value3,
- },
- },
- * => {
- key4 => {
- * => {
- param4 => value4,
- },
- },
- },
- };
|
je cherche a reperer les cles egales a '*' et quand j'en trouve une,
je veut copier la structure sur laquelle pointe la cle un nombre X de fois en creeant les cles necessaires.
(on ne s'interessera pas ici a la facon de nommer les nouvelles cles crees)
puis la structure ayant pour cle '*' est supprime.
exemples
X est egale a 2:
je voudrais obtenir une structure egale a cela:
Code :
- $toto = {
- key1 => {
- key2 => {
- param1 => value1,
- param2 => value2,
- },
- newkey3 => {
- param3 => value3,
- },
- newkey4 => {
- param3 => value3,
- },
- },
- newkey1 => {
- key4 => {
- newkey6 => {
- param4 => value4,
- },
- },
- newkey5 => {
- param4 => value4,
- },
- },
- },
- newkey2 => {
- key4 => {
- newkey8 => {
- param4 => value4,
- },
- },
- newkey7 => {
- param4 => value4,
- },
- },
- },
- };
|
j'ai deja reussi a faire quelque chose qui marche mais je parcours le hash a "expander" dans le sens "normal",
et par consequent je suis oblige de repeter l appel a ma fonction plusieurs fois car quand je copie un bloc
dont la cle etait une etoile, il peut arriver que je duplique a nouveau des etoiles qui se trouverai
dans la sous-structure copier...
bref ca fonctionne mais c'est pas beau !
l'ideal serait de faire un parcours du hash en profondeur, dans le sens "inverse",
mais je n'y arrive pas de cette facon...
si quelqu'un a reussi a comprendre mes explications qui sont pas tres clair,
deja bravo,
et eventuellement si vous aviez une idee pour m'aidez, n'hesitez pas.
je vous remercie d'avance. |