Bonjour,
Peut-être la réponse à ma question se trouve sur le forum mais vu le nombre de posts, difficile de la retrouver...
Voilà le contexte: je souhaite créer un tableau multidimensionnel dont certains éléments, contenant eux-mêmes des éléments simples ou des tableaux, peuvent être utilisés comme des tableaux à index automatique du genre "$toto['tutu'][] = (valeurs)" ou "$toto['tutu'][] => (valeurs)' ou même, si possible, "$toto['tutu'][]['titi'] => (valeur)".
Pour un exemple concret, voici mon but : générer un fichier de commandes SQL permettant de créer une base de données MySQL (ou autre type de bases de données acceptant ce type de fichiers batch) et de la remplir avec des données extraites d'un formulaire et de fichiers texte existants.
Les données élémentaires pour la création de la base sont assez classiques:
- Serveur, utilisateur, mot de passe
- Nom de la base, Character set
- Plusieurs tables
C'est le point 3 qui me pose problème. Comme je ne connais pas dès le départ le nombre de tables nécessaires qui, selon l'organisation souhaitée, peuvent être deux ou trois, je souhaite avoir un élément «table» qui soit un tableau indexable comportant un élément simple «nom de la table» et un tableau vide «liste des champs».
Je crains que le problème principal dans tout ça soit la manière dont j'écris mon script PHP. Comme j'ai une formation déjà ancienne de programmeur, ma tendance immédiate est de créer des «gabarits», des variables typées et structurées. Dans le cas précis, ma variable est définie ainsi:
Il y a bien sûr un troisième élément 'tb_data', que j'ai tenté de définir de plusieurs manières, celle actuelle étant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $fstrs = array ( 'my_data' => array ('my_serv' => 'default', 'my_user' => 'default', 'my_pass' => 'default'), 'db_data' => array ('db_name' => 'default', 'db_cset' => 'default', 'db_ccol' => 'default') );
Quelle que soit la manière dont j'ai tenté de définir cet élément, de la plus simple à la plus complexe, le problème reste le même: le «gabarit» ne pose pas de problème à l'interpréteur, un «var_dump» sur $fstrs s'exécute correctement, mais dès que j'essaie de créer, modifier ou simplement lire le contenu de «tb_data», aucune syntaxe ne semble convenable, le script bloque et n'affiche plus rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 'tb_data' => array ( array( 'tb_file' => 'default', 'tb_field' => array ()))
J'ai donc deux questions, en espérant que la première trouve une réponse positive:
- Y a-t-il moyen de définir un gabarit pour «tb_data» tel qu'on puisse par la suite créer ou lire des éléments ['tb_data'][0]['tb_file'], ['tb_data'][0]['tb_field'][0], ['tb_data'][1]['tb_field'][0], ['tb_data'][1]['tb_field'][1], etc. ?
- Si non, quelle serait la syntaxe pour créer dynamiquement une telle structure ?
Merci d'avance pour toute réponse et bien entendu, si aucune de ces deux possibilités n'est envisageable, merci d'avance pour toute suggestion.
Partager