[RESOLU] Parcourir un tableau de tableau

Petit nouveau ! | 7 Messages

10 sept. 2014, 09:07

Bonjour,
J'ai deux tableaux, et j'aimerais à partir de ces deux tableau en crée un nouveau.

Voici les var_dump des ces deux tableaux.
array (size=2)
  0 =>
    array (size=3)
      0 => string 'test1' (length=6)
      1 => string '10/01/2001' (length=10)
      2 => string '11/11/2001' (length=10)
  1 =>
    array (size=3)
      0 => string 'test2' (length=7)
      1 => string '12/02/2002' (length=10)
      2 => string '12/12/2002' (length=10)
et
array (size=3)
  0 => string 'codeagence' (length=10)
  1 => string 'dateappel' (length=9)
  2 => string 'datefin' (length=7)
J'aimerais obtenir ceci
array (size=3)
  codeagence => string 'test1' (length=10)
  dateappel => string '10/01/2001' (length=9)
  datefin => string '11/11/2001' (length=7)
array (size=3)
  codeagence => string 'test2' (length=10)
  dateappel => string '12/02/2002' (length=9)
  datefin => string '12/12/2002' (length=7)
Voici mon code
public function set_dataUser($dataUser){
  $structure = $this->_manager->get_templateStructure();

 foreach ($dataUser as $data) {
            foreach ($structure as $nameField) {
                foreach ($data as $value) {
                    $newDataUser[$nameField] = $value;
                }
            }            
        }
  $this->_dataUser = $newDataUser;
}
Le problème c'est que j’obtiens ceci.
array (size=3)
  'codeagence' => string '12/12/2002' (length=10)
  'dateappel' => string '12/12/2002' (length=10)
  'datefin' => string '12/12/2002' (length=10)
Je n'arrive pas à parourrir le tableau de tableau.
Il y a une méthode particulère à adopter?

Eléphant du PHP | 113 Messages

10 sept. 2014, 11:20

$tab1 = array(
               array ('test1','10/01/2001','11/11/2001'),
               array ('test2','12/02/2002','12/12/2002')
);

$tab2 = array ('codeagence','dateappel','datefin');

$output = array();
$ligne = array();

//Pour fusionner tab1 avec tab2, où tab deux sera les clés associatives
//On suppose que la taille de tab2 = tab1[]

for ($i=0; $i<count($tab1); $i++) {
   for ($j=0; $j<count($tab1[$i]); $j++) {
      $ligne[$tab2[$j]] = $tab1[$i][$j];
   }
   $output[] = $ligne;
}

Ton erreur est dû au dernier foreach,, tu réassignes pour la même clé les différentes valeurs de ton sous-tableau
foreach ($structure as $nameField) {
                foreach ($data as $value) {
                    $newDataUser[$nameField] = $value;
                }
            }  
En effet ton $namefield ne prendras sa prochaine valeur qu'après que le foreach interne soit terminer :/, d'ou le fait que tes clés possèdent la dernière valeur de ton tableau
Modifié en dernier par toytoy le 10 sept. 2014, 14:51, modifié 1 fois.

Petit nouveau ! | 7 Messages

10 sept. 2014, 13:02

Merci beaucoup