8792 sujets

Développement web côté serveur, CMS

J'ai un gros dossier là, je me prends la tête je me suis dis que ça coûtait rien de poser la question si quelqu'un trouve avant moi.

Voilà le problème à résoudre, j'ai un array avec d'autre array imbriqués

__A___B_______C______
| a1 | b1 |__D__|__E___|
|.....|.....|...d1...|...e1...|
|___|___|__d2__|__e2__|
| a2 | b2 |__D__|__E___|
|.....|.....|...d3...|...e3...|
|___|___|__d4__|__e4__|


toutes les valeurs peuvent être des array et il faut donc faire une récursivité mais supposons que nous n'ayons que des valeurs terminales dans ce tableau d'exemple.

Il y a deux cas:

si D et E sont des chaines de caractères alors on doit obtenir

__A___B___C.D___C.E__
| a1 | b1 | d1 | e1 |
| a1 | b1 | d2 | e2 |
| a2 | b2 | d3 | e3 |
| a2 | b2 | d4 | e4 |

Mais si ce sont des valeurs numériques alors on a:

__A___B____C___
| a1 | b1 | d1 |
| a1 | b1 | d2 |
| a1 | b1 | e1 |
| a1 | b1 | e2 |
| a2 | b2 | d1 |
| a2 | b2 | d2 |
| a2 | b2 | e1 |
| a2 | b2 | e2 |

Si y a une brute de guerre des fonctions récursives qui passe dans le coin... il a de quoi s'amuser. Qu'il me réponde, ça me fera bien économiser 2 jours de prises de tête.
Sinon tant pis merci quand même Smiley lol
Modifié par Charlycoste (07 Jul 2006 - 11:59)
Administrateur
EDIT: désimbriquer des tableaux a un rapport avec les standards, je rouvre après MP de charlycoste.

------------------
Bonjour,

Je crains bien que ce sujet n'ait aucun rapport avec ce qui est attendu dans ce salon Smiley ohwell
ni avec les Standards.

Je vais donc fermer ce sujet et t'orienter vers les forums PHP généralistes évoqués dans le lien que je t'ai donné (ou Prog@HFr, etc).

Felipe
Modifié par Felipe (07 Jul 2006 - 13:19)
Administrateur
Es-tu autorisé à faire 2 passes récursives, la première consistant à vérifier si tout est numérique ou non, ou bien c'est en une seule passe obligatoirement?
Modifié par Felipe (07 Jul 2006 - 13:33)
Carte blanche!

Le but est de "dé-dimensionner" un tableau pour le rendre exportable.
Ca permettrait d'exporter en csv et des tas d'autres fonctionnalités qui nécessitent qu'un tableau soit "standard" par opposition à "imbriqué".
Administrateur
Bonjour,

les 2 cas - tout numérique et au moins une chaîne de caractère - semblent très différents et ça vaudrait probablement le coup de faire une première passe pour détecter dans quel cas se trouve le tableau. Par contre, faut-il que chaque tableau "final" (ne contenant que des valeurs et pas un autre tableau) soit transformé au fur et à mesure selon l'un des cas ou bien le cas "que des valeurs numériques" n'est-il valable que si tous les tableaux finaux ne contiennent que des valeurs numériques?

Si tu n'aimes pas la récursivité, ça ressemble en tout cas à un arbre où les feuilles sont des tableaux "normaux" et les noeuds non-terminaux des tableaux contenant d'autres tableaux. Pour le parcours d'arbre tu aurais ensuite le choix selon possibilités et affinités.