Manipulation array
Melooo
Messages postés
1476
Statut
Membre
-
Melooo Messages postés 1476 Statut Membre -
Melooo Messages postés 1476 Statut Membre -
Bonjour,
Comment faire pour réunir un tableau avec la même valeur de clé ?
par exemple :
Commet puis-je regroupe dans un même tableau les valeurs qui possède les mêmes clés ?
donc avoir un array pour 35 et un array pour 36...
Comment faire pour réunir un tableau avec la même valeur de clé ?
par exemple :
Array ( [35] => 100 ) Array ( [35] => 0 ) Array ( [35] => 100 ) Array ( [36] => 0 ) Array ( [36] => 0 ) Array ( [36] => 0 ) Array ( [36] => 75 ) Array ( [36] => 55 ) Array ( [36] => 100 ) Array ( [36] => 12 ) Array ( [36] => 28 ) Array ( [36] => 87 ) Array ( [36] => 0 ) Array ( [36] => 56 ) Array ( [36] => 100 )
Commet puis-je regroupe dans un même tableau les valeurs qui possède les mêmes clés ?
donc avoir un array pour 35 et un array pour 36...
A voir également:
- Manipulation array
- Mode anti manipulation - Forum TV & Vidéo
- Mode anti manipulation involontaire - Forum Windows 10
- Cannot use a scalar value as an array ✓ - Forum PHP
- Manipulation Photoshop - Forum Photoshop
- Je n arrive plus a avoir acces a facebook a cause d une mauvaise manipulation - Forum Facebook
1 réponse
Salut !
Tu as :
Et tu veux :
C'est bien ça ?
Essayes un truc ainsi :
$array, ce sont des petits tableaux (donc faut faire un bouclage sur tous tes tableaux là.
$array35 est un tableau contenant les valeurs des tableaux 35
$array36 est un tableau contenant les valeurs des tableaux 36
Ce que je fais :
- je test si le tableau en question contient la clé 35,
- je test aussi si le tableau ne contient qu'une case (sinon il aurait fallu faire une récursivité sur les cases du tableau en plus).
- si oui : on ajoute au tableau 35
Idem pour 36.
Tu as :
Array ( [35] => 100 ) Array ( [35] => 0 ) Array ( [35] => 100 ) Array ( [36] => 0 ) Array ( [36] => 0 ) Array ( [36] => 0 ) Array ( [36] => 75 ) Array ( [36] => 55 ) Array ( [36] => 100 ) Array ( [36] => 12 ) Array ( [36] => 28 ) Array ( [36] => 87 ) Array ( [36] => 0 ) Array ( [36] => 56 ) Array ( [36] => 100 )
Et tu veux :
// celui de 35
Array (
[0] => 100,
[1] => 0,
[2] => 100
)
// celui de 36
Array (
[0] => 0,
[2] => 0,
[3] => 0,
[4] => 75,
[5] => 55,
[6] => 100,
[7] => 12,
[8] => 28,
[9] => 87,
[10] => 0,
[11] => 56,
[12] => 100
)
C'est bien ça ?
Essayes un truc ainsi :
if (array_key_exists('35', $array) and sizeof($array) == 1) {
array_merge($array35, $array);
} elseif (array_key_exists('36', $array) and sizeof($array) == 1) {
array_merge($array35, $array);
}
$array, ce sont des petits tableaux (donc faut faire un bouclage sur tous tes tableaux là.
$array35 est un tableau contenant les valeurs des tableaux 35
$array36 est un tableau contenant les valeurs des tableaux 36
Ce que je fais :
- je test si le tableau en question contient la clé 35,
- je test aussi si le tableau ne contient qu'une case (sinon il aurait fallu faire une récursivité sur les cases du tableau en plus).
- si oui : on ajoute au tableau 35
Idem pour 36.
je les récupères de ma base de données...
Donc j'ai essayé d'arranger à ma sauce (ce qui est pas gagné) ce qui donne :
$array = array($parcours[1] => $le_parcours[0]); if (array_key_exists($parcours[1], $array)){ print_r($le_parcours[0].'<br /><br />'); }voila ce que mon donne mon code :
en faite dans ma base de données j'ai des tâches, c'est tâches peuvent posséder, des "tâches précédent" par exemple ma tâche 19 à comme tâche précédentes la 1,13 et 18... cela veut dire que ma tâche 1 sera à 100%(c'est à dire terminé) quand les tâches précédentes (1,13 et18) seront à 100%... si la tâche précédent 13 et 18 sont terminés mais pas la 1 alors ma tâche 19 sera "en cours"...
je sais pas si je suis très claire...
$array = array($parcours[1] => $le_parcours[0]); if (array_key_exists($parcours[1], $array)){ if($le_parcours[0] > 0 && $le_parcours[0] < 100){ echo "encours"; }else if($le_parcours[0] == 100){echo "termine";} }Je n'ai pas fini encore le code hein... pensez-vous que je suis sur la bonne voie ?
$idx_actions = "SELECT .... FROM .... WHERE ..."; $query_action = mysql_query($idx_actions); $rows = mysql_num_rows($query_action); while ($parcours = mysql_fetch_array($query_action)) { $explode_action = explode(',' , $parcours[0]); //print_r($test = array($parcours[1] => $explode_action)); foreach( $explode_action as $value ) { $req_stat = "SELECT.. FROM tableau_bord WHERE tableau_int = '".$value."' "; $query_stat = mysql_query($req_stat); while($le_parcours = mysql_fetch_array($query_stat)) { $array[$parcours[1]] = array($parcours[1] => $le_parcours[0]); if (array_key_exists($parcours[1], $array[$parcours[1]])){ array_search($le_parcours[0], $array[$parcours[1]]); { array_merge($array[$parcours[1]],$array); print_r($array[$parcours[1]]); } /*if($le_parcours[0] > 0 && $le_parcours[0] < 100){ echo "encours"; }else if($le_parcours[0] == 100){echo "termine";} else if($le_parcours[0] == 0){echo "enattente";}*/ }Donc en faite je voudrais savoir le statut de mes tâches en fonctions des tâches précédentes... mais je voudrais supprimer les doublons, comme par exemple pour la tâche 35, la tâche 1 et 18 sont terminés, donc du coup il m'affiche deux fois terminés, alors que je voudrais qu'il m'affiche encours