Modifier array dans un foreach en PHP
Résolu
mariostar27
Messages postés
442
Statut
Membre
-
lemilas -
lemilas -
Bonjour,
voici mon problème. j'ai un array de forme :
J'aimerai modifier se tableau dans une boucle foreach. le soucis, c'est que rien ne change. voici ce que j'obtiens :
j'obtiens le résultat suivant :
Pourquoi les valeurs n'ont t-elle pas été changé dans la seconde boucle foreach ???
merci d'avance pour votre aide.
gwennael
voici mon problème. j'ai un array de forme :
array
93 =>
array
'ID' => string '93' (length=2)
'CODE' => string 'CFH' (length=3)
'ANNEESCOLAIRE' => string '2010' (length=4)
'UNITE' => string 'Heure' (length=5)
'LIBELE' => string 'Cours Formation Humaine' (length=23)
'VISIBLE' => string '0' (length=1)
'SAISISSABLE' => int 1
11 =>
array
'ID' => string '11' (length=2)
'CODE' => string 'CL' (length=2)
'ANNEESCOLAIRE' => string '2010' (length=4)
'UNITE' => string 'Heure' (length=5)
'LIBELE' => string 'Cours de langue' (length=15)
'VISIBLE' => string '0' (length=1)
'SAISISSABLE' => int 1
J'aimerai modifier se tableau dans une boucle foreach. le soucis, c'est que rien ne change. voici ce que j'obtiens :
foreach ($A_tableauNatureActivite as $key => $nature){
$nature['SAISISSABLE'] = 0;
echo $nature['CODE']." = ".$nature['SAISISSABLE']."<br/>";
}
echo "### MAINTENANT ###<br/>";
foreach ($A_tableauNatureActivite as $key => $nature){
echo $nature['CODE']." = ".$nature['SAISISSABLE']."<br/>";
}
j'obtiens le résultat suivant :
CFH = 0 CL = 0 ### MAINTENANT ### CFH = 1 CL = 1
Pourquoi les valeurs n'ont t-elle pas été changé dans la seconde boucle foreach ???
merci d'avance pour votre aide.
gwennael
A voir également:
- Modifier array dans un foreach en PHP
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Modifier l'extension d'un fichier - Guide
- Modifier story facebook - Guide
- Modifier sa voix en direct - Guide
4 réponses
Bonsoir
Pas d'accord avec mpmp93
Si ça ne marche pas, c'est parce que tu modifies la variable $nature, qui est une copie d'un élément du tableau, mais pas le tableau lui même.
Note que depuis PHP5 si tu l'as, tu peux aussi modifier le tableau à travers la variable $nature à condition de l'avoir passée par référence ( note le & devant $nature dans le foreach)
Pas d'accord avec mpmp93
Si ça ne marche pas, c'est parce que tu modifies la variable $nature, qui est une copie d'un élément du tableau, mais pas le tableau lui même.
foreach ($A_tableauNatureActivite as $key => $nature){
$A_tableauNatureActivite[$key]['SAISISSABLE'] = 0; // ça, ça modifie bien le tableau
}
Note que depuis PHP5 si tu l'as, tu peux aussi modifier le tableau à travers la variable $nature à condition de l'avoir passée par référence ( note le & devant $nature dans le foreach)
foreach ($A_tableauNatureActivite as $key => &$nature){
$nature['SAISISSABLE'] = 0; // ça aussi, ça modifie bien le tableau en PHP5
}
Bonsoir,
Le problème est que vous avez des tableaux dans un tableau.
Code qui irait bien:
ai pas testé, mais c'est ce que je verrai bien...
Sinon:
A+
Le problème est que vous avez des tableaux dans un tableau.
array
93 =>
array
'ID' => string '93' (length=2)
'CODE' => ....etc....
Code qui irait bien:
foreach ($A_tableauNatureActivite as $key => $val){
foreach($val AS $key2 => $nature)
$nature['SAISISSABLE'] = 0;
echo $nature['CODE']." = ".$nature['SAISISSABLE']."<br/>";
}
}
ai pas testé, mais c'est ce que je verrai bien...
Sinon:
foreach ($A_tableauNatureActivite as $key => $nature){
$nature[$key]['SAISISSABLE'] = 0;
echo $nature['CODE']." = ".$nature['SAISISSABLE']."<br/>";
}
A+