Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/12/2011, 17h05   #1
Membre du Club
 
Avatar de Paniez
 
Inscription : janvier 2003
Messages : 160
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2003
Messages : 160
Points : 54
Points : 54
Par défaut Tableau multi-dimensionnel et insertion

Bonjour,

J'ai une liste de tableau associatif où ils ont un id pour les distinguer et où ils peuvent s'imbriquer :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Array
(
    [0] => Array
        (
            [id] => 1
            [enfants] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                        )
                    [1] => Array
                        (
                            [id] => 3
                            [enfants] => Array
                                   (
                                       [id] => 4
                                   )
                        )
                     //Ajout de [2] ici par exemple
                )
        )
 
    [1] => Array
        (
            [id] => 5
        )
)
J'ai un souci lors de l'ajout d'un nouveau sous-tableau. Mon code fonctionne pour l'ajout jusqu'à une profondeur de 2, mais plus rien après ($_t2Add est le sous-tableau à insérer) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  function modifSubTab($_tDonnees,$_t2Add,$_id)
  {
    foreach($_tDonnees as $cle => $val)
    {
      if(is_array($val))
      {
	if(yucca1_strcmp($val['id'],$_id))
	{
	  $val['enfants'][]=$_t2Add;
	  $_tDonnees[$cle]=$val;
	  break;
	}
	else
	  modifSubTab($val,$_t2Add,$_id);
      }
    }
  }
Bonne journée
Paniez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 17h34   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

Je ne pense pas qu'il soit judicieux d'insérer des données dans un tableau tout en le parcourant. Enfin, je pense que tu auras à faire face à des trucs très très joyeux. A tout hasard as-tu essayé en manipulant les données par référence ?

Quelque chose comme ça :
Code :
foreach($_tDonnees as $cle => &$val)
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 17h59   #3
Membre du Club
 
Avatar de Paniez
 
Inscription : janvier 2003
Messages : 160
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2003
Messages : 160
Points : 54
Points : 54
Citation:
Envoyé par rawsrc Voir le message
Bonjour,

Je ne pense pas qu'il soit judicieux d'insérer des données dans un tableau tout en le parcourant. Enfin, je pense que tu auras à faire face à des trucs très très joyeux. A tout hasard as-tu essayé en manipulant les données par référence ?

Quelque chose comme ça :
Code :
foreach($_tDonnees as $cle => &$val)
Re,
J'avoue que le & dans le foreach, je n'y avais pas pensé.

EDIT : Il faut rajouter le & dans la fonction :
Code :
function modifSubTab(&$_tDonnees,&$_t2Add,$_id)
Et c'est bien vu, c'est exactement ça
Merci
Paniez est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h04.


 
 
 
 
Partenaires

Hébergement Web