Page 1 sur 2

Trier un tableau sur multi-dimensionnel!

Posté : 30 avr. 2009, 09:52
par murof
Bonjour,
Mon problème est dans le titre.
Jai un tableau généré ainsi:

Code : Tout sélectionner

$tab[$i] ['Z1'] = $Z1; $tab[$i] [$ii] ['Z2'] = $Z2; $tab[$i] [$ii] ['Z3'] = $Z3;
Mon tableau est correct après génération, mai je n'arrive pas a le trier.
Je souhaiterais de la trier d'abord sur Z1, et a l'interieur du Z1, sur Z2 et ensuite sur Z3
J'ai testé avec différents code dont:

Code : Tout sélectionner

foreach ($tab as $key => $row) { $Z1T[$key] = $row['Z1']; $Z2T[$key] = $row['Z2']; $Z3T[$key] = $row['Z3']; } array_multisort ($Z1T, SORT_ASC, $tab); array_multisort ($Z2T, SORT_DESC, $Z3T, SORT_ASC, $tab);
Mais cela ne marche pas.
Quelqu'un peut-til m'aider.
Merci!

Posté : 30 avr. 2009, 12:33
par Nours312
pour que cela fonctionne, il faudrait que tu est ton tableau différemment :

foreach ($tab as $key => $row)
{
$Z1T[$key] = $row['Z1'];
$Z2T[$key] = $row['Z2'];
$Z3T[$key] = $row['Z3'];
}

/ ici $row['Z2'] et $row['Z3'] n'existent pas ...

il te faudrait :

$tab[$i] ['Z1'] = $Z1;
$tab[$i]['Z2'] [$ii] = $Z2;
$tab[$i]['Z3'] [$ii] = $Z3;

si tu ne peux pas intervenir sur la construction du tableau, je te conseillerais de le reprendre avec une fonction du style :

foreach ($tab as $k => $v){
  if(is_array($v){
    foreach ($v as $l => $m )
      unset($tab[$k][$l];
      $tab[$l][$k] = $m ;
    }
  }
}
et désormais, ce serait plus simple ;) ...

Posté : 30 avr. 2009, 13:06
par murof
Bonjour Nours312,

Merci de ta réponse.

STP, si ca te derange pas, peux tu m'expliquer un peu ta fonction, car je ne comprend pas tout et j'aime bien comprendre ce que je fais

A+

Posté : 30 avr. 2009, 13:24
par Nours312
en fait cette fonction sert juste à remplacer

$tab[$i][$ii]['Z2'] = $Z2;
par
$tab[$i]['Z2'][$ii] = $Z2;

ainsi, sur chaque boucles,

foreach ($tab as $key => $row)
{

// tu as $row ['Z1'] => $Z1
// $row['Z2'] => array();
// $row['Z3'] => array();

... ce sera plus simple pour l'utiliser non ?
foreach ($tab as $k => $v){
  if(is_array($v){
    foreach ($v as $l => $m )
      unset($tab[$k][$l]; // on supprime la variable utilisée
      $tab[$l][$k] = $m ; // on inverse les clé et on incrémente le tableau d'origine
    }
  }
}

Posté : 30 avr. 2009, 13:49
par murof
Je te crois quand tu dis que ce doit être plus simple.
Mais pour l'instant ca marche pas.
Voila mon code:

Code : Tout sélectionner

$tab [$i] ['Z1'] = $Z1; foreach ($tab as $k => $v){ if(is_array($v)){ foreach ($v as $l => $m ){ unset($ident[$k][$l]); // on supprime la variable utilisée $tab[$l][$k] = $m ; // on inverse les clé et on incrémente le tableau d'origine } } }
Voila la tronche de mon tableau après!

Code : Tout sélectionner

Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 ) ) 86-87 Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [1] => 86-87 ) [1] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 ) [1] => Array ( ) ) 87-88 Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [2] => 87-88 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [2] => 87-88 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 ) [1] => Array ( ) [2] => Array ( ) ) 88-89 Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [3] => 88-89 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [3] => 88-89 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [3] => 88-89 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [3] => 88-89 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [3] => 88-89 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [3] => 88-89 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [3] => 88-89 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [3] => 88-89 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [3] => 88-89 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [3] => 88-89 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [3] => 88-89 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) 90-91 Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [4] => 90-91 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) ) 91-92 Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [5] => 91-92 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) ) 92-93 Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) ) Array ( [0] => Array ( [Classe] => 85-86 ) [Classe] => Array ( [4] => 90-91 [6] => 92-93 ) [1] => Array ( [Classe] => 86-87 ) [2] => Array ( [Classe] => 87-88 ) [3] => Array ( [Classe] => 88-89 ) [4] => Array ( ) [5] => Array ( [Classe] => 91-92 ) [6] => Array ( ) ) Array ( [0] => Array ( ) [Classe] => Array ( [0] => 85-86 [1] => 86-87 [2] => 87-88 [3] => 88-89 [5] => 91-92 [6] => 92-93 ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( [Classe] => 90-91 ) [5] => Array ( ) [6] => Array ( ) )
Ou Z1 est remplacé par Classe

Posté : 30 avr. 2009, 14:22
par Nours312
$Z1 est un tableau ou une valeur ?

donnes moi la structure de ton tableau avant, et decris moi précisément ce que tu souhaites obtenir ...

Posté : 30 avr. 2009, 14:31
par murof
$Z1 est une valeur.

Dans une base, j'ai par année scolaire des noms de personnes soit prof , soit eleve.
Je souhaite etablir pour une personne donnée (ca ca marche) sa scolarité avec ses classes ses profs, ses copains de classes.
Pour certaines raison de conception, je suis abligé de passer par un tableau que je relierais ensuite pour afficher avec;
par annee scolaire exemple 88-89,
D'abord le nom du prof, et ensuite le nom des elève par ordre alpha.
D'ou l'utilisation d'un tableau mullti avec pour une meme annee les différents nom et la notion eleve ou profs(que j'ai dans ma base)
voila tu sais tout

Posté : 30 avr. 2009, 14:44
par Nours312
donc, si je reprend :

tu dois avoir :

$tab[$id_individu][$année]['etat'] = 'prof' | 'eleve';
$tab[$id_individu][$année]['prof'] = $id_individu ;// celui du prof
$tab[$id_individu][$année]['eleves'] = array($liste des éléves) ;

$individu[$id_individu] = array('nom'=>'....', 'adresse'=> .... );

as tu la possibilité de monter ton tableau initial ainsi ?

ensuite, il te suffirait de le lister pour tout retrouver facilement ....

si tu n'y arrives pas, donnes moi la structure de tes tables, et je t'aiderais ...
et si tu ne peux pas toucher à ton tableau, ... fait un print_r() de celui-ci, on y verra un peu mieux ...

@Toute ;)

Posté : 30 avr. 2009, 15:09
par murof
Pas tout a fait, vu que c'est pour une année que j'ai des individu et non par individu ces années, si je comprend bien ce que tu as voulu dire, donc plutot:

Code : Tout sélectionner

$tab[$année][$id_individu]['etat'] = 'prof' | 'eleve'; $tab[$année][$id_individu]['prof'] = $id_individu ;// celui du prof $tab[$année][$id_individu]['eleves'] = array($liste des éléves) ;
Tout d'abord j'ai une table dans laquelle j'ai tout les noms avec un N° identifiant.

Je vais donc dans cette table récupérer le numéro de la personne concernée.

Ensuite j'ai une autre table avec les classes et les numéro correspondant aux noms la composant.

Je vais donc dans cette table chercher les classes dans laquelle à été cette personne et je crée un premier tableau.

Maintenant je relie donc ce tableau des classes dans lesquelles la personne à été, et je récupre les N° des personnes et ensuite par mysql_query le nom.

Tout ca ca marche.

Donc c'est ici que je génére mon second tableau avec l'année, les noms et le statut c'est pourquoi j'avais pensé a un tableau multi.

A+

Posté : 30 avr. 2009, 15:48
par Nours312
c'est exactement ce que je t'ai mis en haut sauf que j'ai rajouter un étage pour tous es individus, alors que tu ne récupère els données que pour un seul .... ok !!

par contre, tu devrais éviter de faire une requete pour chaque nom des individus, c'est remplacé par le tableau $individu ... ce sera plus rapide ...

donc on fait une table :

Code : Tout sélectionner

$tab[$année]['etat'] = 'prof' | 'eleve'; $tab[$année]['prof'] = $id_individu ;// celui du prof $tab[$année]['eleves'] = array($liste des éléves) ;
et ensuite :

foreach ($tab as $annee => $t) {
  echo 'année : '.$annee.' <br/>';
  echo 'prof    : '.$t['prof'].' <br/>';
  echo 'vous etiez : '.$t['etat'].' <br/>';
  echo liste des élèves : ';
  foreach ($t[eleves'] as $idEleves){
     echo $individu[$idEleves]['nom'].', ';
  }
}

cela te conviendrait ... ?

Posté : 30 avr. 2009, 17:24
par murof
excuse un petit souci, j'ai du m'absenter.

Deux questions.
J'ai une parse erreur dans

Code : Tout sélectionner

$tab[$année]['etat'] = 'prof' | 'eleve'; $tab[$année]['prof'] = $id_individu ;// celui du prof $tab[$année]['eleves'] = array($liste des éléves) ; Parse error: syntax error, unexpected ';', expecting ']'...
Je ne vois pas laquelle?

Et a quoi correspond to tableau $liste des éléves

Posté : 30 avr. 2009, 18:48
par Nours312
je ne t'ai jamais dit de le mettre comme ça dans ton script php !! ...

dans le code que je t'ai donné c'est pour les valeurs extraient de ta base de donnée ...

$tab[$année]['etat'] = 'eleve'; // c'est ici que tu met la valeur soit prof soit eleve
$tab[$année]['prof'] = $id_individu ;// celui du prof
$tab[$année]['eleves'] = array(/* table contenant tous les ids des eleves */) ;

Posté : 30 avr. 2009, 18:57
par murof
J'ai mis ca:

Code : Tout sélectionner

$tab[$annee][$row_Recordrecid['Identite']]['etat'] = '1' | '0'; if ($row_Recordrecid['Profs'] == 1) { $tab[$annee][$row_Recordrecid['Identite']]['1'] = $row_Recordrecid['Identite'] ;// celui du prof } else { $tab[$annee][$row_Recordrecid['Identite']]['0'] = $row_Recordrecid['Identite'] ; }
ca me donne ce bout de code:

Code : Tout sélectionner

Array ( [85-86] => Array ( [Regine GOURDON] => Array ( [etat] => 1 [1] => Regine GOURDON ) ) ) Array ( [85-86] => Array ( [Regine GOURDON] => Array ( [etat] => 1 [1] => Regine GOURDON ) [Mme HULIN] => Array ( [etat] => 1 [0] => Mme HULIN ) ) ) Array ( [85-86] => Array ( [Regine GOURDON] => Array ( [etat] => 1 [1] => Regine GOURDON ) [Mme HULIN] => Array ( [etat] => 1 [0] => Mme HULIN )
Mais dans l'affichage du foreach ca donne rpas ce que je veux

Posté : 30 avr. 2009, 20:12
par Nours312
je ne vois pas pourquoi tu mets dans la clé du premier niveau suivant l'année, le nom ....

ce n'est pas pratique ...

dans l'exemple que je t'ai donné, je t'ai dit de mettre trois données directement en dessous de l'année,
1. si cette année là, il été prof ,
2. le nom du prof cet année là,
3. la liste des élèves cette année là ...


les noms sont-ils ceux des élèves ou des profs ?

et fait ton print_r() après la boucle de conception, ce sera plus lisible ...


peux tu le faire ??

@+

Posté : 30 avr. 2009, 21:05
par sadeq
Peux-tu nous donner un récap simplifié sur la structure et les relations de tes tables avec la liste des champs ? à ce moment on peut te préconiser une structure hiérarchique adaptée à ton tableau.