Operation sur tableau php
Résolu/Fermé
nephis43
Messages postés
6
Date d'inscription
mardi 20 septembre 2011
Statut
Membre
Dernière intervention
22 septembre 2011
-
Modifié par nephis43 le 21/09/2011 à 14:52
nephis43 Messages postés 6 Date d'inscription mardi 20 septembre 2011 Statut Membre Dernière intervention 22 septembre 2011 - 22 sept. 2011 à 09:03
nephis43 Messages postés 6 Date d'inscription mardi 20 septembre 2011 Statut Membre Dernière intervention 22 septembre 2011 - 22 sept. 2011 à 09:03
A voir également:
- Operation sur tableau php
- Tableau croisé dynamique - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Trier tableau excel - Guide
- Imprimer tableau excel sur une page - Guide
3 réponses
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 340
21 sept. 2011 à 16:08
21 sept. 2011 à 16:08
Bonjour,
Et un tableau dans un tableau comme ceci:
????
affiche
106
206
306
A noter qu'on peut gérer les index de clés comme ceci:
Je sais, c'est pas 'propre' comme des tables en SGBD, mais c'est une idée qui peut dépanner...
A+
Et un tableau dans un tableau comme ceci:
$voitures = array( 'renault' => array( 'clio', 'twingo', ), 'peugeot' => array( '106', '206', '306', ), );
????
$marque = $voitures['peugeot']; foreach($marque AS $key => $modele) { echo '<br/>'.$modele; }
affiche
106
206
306
A noter qu'on peut gérer les index de clés comme ceci:
$voitures = array( 'renault' => array( '1' => 'clio', '5' => 'twingo', ), 'peugeot' => array( '1' => '106', '16' => '206', '354' => '306', ), );
Je sais, c'est pas 'propre' comme des tables en SGBD, mais c'est une idée qui peut dépanner...
A+
nephis43
Messages postés
6
Date d'inscription
mardi 20 septembre 2011
Statut
Membre
Dernière intervention
22 septembre 2011
21 sept. 2011 à 16:48
21 sept. 2011 à 16:48
merci je vais regarder ça :)
nephis43
Messages postés
6
Date d'inscription
mardi 20 septembre 2011
Statut
Membre
Dernière intervention
22 septembre 2011
22 sept. 2011 à 09:03
22 sept. 2011 à 09:03
J'ai réussi, j'indique la réponse sur le forum si ça peut aider certain pour d'autres problèmes. a la fin du code de ma fonction j'ai montré un exemple qui déroule l'algo.
En espérant pouvoir aider quelqu'un =)
dans mon programme je fais appel à une fonction :
$tab3=array();
comparer_tableau($tab, $tab2, $tab3);
ma fonction est la suivante :
/*
Cette fonction recupere
-tab (constitué de la catégorie que l'on veut modifier + ses catégories filles)
-tab2 (constitué de toutes les catégories)
-tab3 initialement vide qui est passé par référence.
L objectif de la fonction est de récupérer dans tab3 toutes les catégories MOINS ( la catégorie traité et ses catégories filles )
*/
function comparer_tableau($tab, $tab2, &$tab3) {
//on parcours le tableau contenant toutes les catégories
foreach($tab2 as $valeur)
{
//on initialise une variable
$var=0;
//on parcours le tableau contenant la catégorie traitée + ses filles
foreach ($tab as $test)
{
// on incrémente une variable
if ($valeur[0] != $test[0])
$var++;
//si cette variable est égal à la taille du tableau qui contient la catégorie traitée + ses filles
//cela veut dire que l'id de la catégorie traité par le foreach de tab2 ne se trouve pas dans le foreach de temp
//donc on ajoute cette id dans le tab3 qui sera retourné par la fonction.
if($var==count($tab))
$tab3[]=array($valeur[0],$valeur[1], $valeur[2]);
}
}
}
/*
SCHEMA EXPLCATIF DE LA FONCTION COMPARER_TABLEAU.
tab2 est de la forme
[0] = array ( [0] => id categorie
[1] => niveau de la catégorie (hiérarchie)
[2] => nom de la catégorie
tab est de la même forme que tab2 mais ils ne contiennent pas forcément les mêmes informations
etc...
Occupons nous uniquement des ID
1 2 3 4 5 => liste des id de tab2
2 5 => liste des id de tab
objectif => avoir un tableau qui contient les ID 1 3 4
**************1er parcours***********
on parcours tab 2
on traite id 1
on parcours tab
on traite id3
1 != 2 => var=1
on parcours tab
on traite l'id5
1!=5 => var=2
var = taille du tableau tab, donc on écrit la catégorie 1 dans le tableau 3
*********** 2e parcours **************
on parcours tab 2
on traite id 2
on parcours tab
on traite id3
2 = 2 => var=0
on parcours tab
on traite l'id5
2!=5 => var=1
var est différent de la taille du tableau tab
donc on n'écrit pas cette catégorie dans le nouveau tableau.
*/
En espérant pouvoir aider quelqu'un =)
dans mon programme je fais appel à une fonction :
$tab3=array();
comparer_tableau($tab, $tab2, $tab3);
ma fonction est la suivante :
/*
Cette fonction recupere
-tab (constitué de la catégorie que l'on veut modifier + ses catégories filles)
-tab2 (constitué de toutes les catégories)
-tab3 initialement vide qui est passé par référence.
L objectif de la fonction est de récupérer dans tab3 toutes les catégories MOINS ( la catégorie traité et ses catégories filles )
*/
function comparer_tableau($tab, $tab2, &$tab3) {
//on parcours le tableau contenant toutes les catégories
foreach($tab2 as $valeur)
{
//on initialise une variable
$var=0;
//on parcours le tableau contenant la catégorie traitée + ses filles
foreach ($tab as $test)
{
// on incrémente une variable
if ($valeur[0] != $test[0])
$var++;
//si cette variable est égal à la taille du tableau qui contient la catégorie traitée + ses filles
//cela veut dire que l'id de la catégorie traité par le foreach de tab2 ne se trouve pas dans le foreach de temp
//donc on ajoute cette id dans le tab3 qui sera retourné par la fonction.
if($var==count($tab))
$tab3[]=array($valeur[0],$valeur[1], $valeur[2]);
}
}
}
/*
SCHEMA EXPLCATIF DE LA FONCTION COMPARER_TABLEAU.
tab2 est de la forme
[0] = array ( [0] => id categorie
[1] => niveau de la catégorie (hiérarchie)
[2] => nom de la catégorie
tab est de la même forme que tab2 mais ils ne contiennent pas forcément les mêmes informations
etc...
Occupons nous uniquement des ID
1 2 3 4 5 => liste des id de tab2
2 5 => liste des id de tab
objectif => avoir un tableau qui contient les ID 1 3 4
**************1er parcours***********
on parcours tab 2
on traite id 1
on parcours tab
on traite id3
1 != 2 => var=1
on parcours tab
on traite l'id5
1!=5 => var=2
var = taille du tableau tab, donc on écrit la catégorie 1 dans le tableau 3
*********** 2e parcours **************
on parcours tab 2
on traite id 2
on parcours tab
on traite id3
2 = 2 => var=0
on parcours tab
on traite l'id5
2!=5 => var=1
var est différent de la taille du tableau tab
donc on n'écrit pas cette catégorie dans le nouveau tableau.
*/