2010-11-29 6 views
0

J'essaie de créer des tables avec des informations provenant de deux tableaux. Voici les deux tableaux:Réindexer et remplir le tableau en fonction d'un autre tableau

Premier tableau, pour les en-têtes de table

Array 
(
    [0] => Color 
    [1] => Length 
    [2] => Waist 
) 

du tableau Deuxièmement, celui qui a besoin d'une modification

Array 
(
    [0] => Array 
     [0] => green [1] => Color 

    [1] => Array 
     [0] => 23 [1] => Length 
) 
Array 
(
    [0] => 
) 
Array 
(
    [0] => Array 
     [0] => 23 [1] => Length 

    [1] => Array 
     [0] => 24 [1] => Waist 
)  

tableau doit ressembler à ceci:

Array 
(
    [0] => Array 
     [0] => green [1] => Color 

    [1] => Array 
     [0] => 23 [1] => Length 

    [2] => Array 
     [0] => [1] => Waist 

Array 
(
    [0] => Array 
     [0] => [1] => Color 

    [1] => Array 
     [0] => [1] => Length 

    [2] => Array 
     [0] => [1] => Waist 

Array 
(
    [0] => Array 
     [0] => [1] => Color 

    [1] => Array 
     [0] => 23 [1] => Length 

    [2] => Array 
     [0] => 24 [1] => Waist 

Donc le fait est que les clés du premier niveau doivent correspondre aux touches du tableau kes les en-têtes de table, où [1] un le deuxième niveau a la même valeur que l'en-tête de la table. Des idées?

+0

Il est difficile de comprendre votre problème. Avez-vous besoin de reformater des tableaux? Pouvez-vous ne pas modifier le script qui les génère pour donner les tableaux dans le bon format? – Stephen

+0

L'ordre des touches numériques est-il important? – Stephen

+0

Pourquoi ne pas 'Array ([Color] => vert, [Length] => 23, [Waist] => 24)' à la place? C'est beaucoup plus logique à mon humble avis. Je commente au lieu de répondre parce qu'il ne répond pas à votre question. – Jonah

Répondre

2

Vous avez une structure de réseau complexe pour un ensemble facile Les données. Votre dernier tableau pourrait-il mieux fonctionner comme ça?

$data = array(
    array(
     'Color' => 'green', 
     'Length' => 23, 
     'Waist' => NULL 
    ), 
    array(
     'Color' => NULL, 
     'Length' => NULL, 
     'Waist' => NULL 
    ), 
    array(
     'Color' => NULL, 
     'Length' => 23, 
     'Waist' => 24 
    ) 
); 

Si vous êtes mort mis sur la structure, cependant, cela devrait fonctionner:

function format_my_array($keys, $malformed) { 
    foreach ($malformed as $key => $fragments) { 
     $temp = array(
      'Color' => NULL, 
      'Length' => NULL, 
      'Waist' => NULL 
     ); 
     foreach ($fragments as $fragment) { 
      if (isset($fragment[1])) { 
       switch($fragment[1]) { 
        case 'Length': 
         $temp['Length'] = $fragment[1]; 
         break; 
        case 'Waist': 
         $temp['Waist'] = $fragment[1]; 
         break; 
        default: 
         $temp['Color'] = $fragment[1]; 
         break; 
       } 
      } 
     } 
     $malformed[$key] = array(
      array($temp['Color'], 'Color'), 
      array($temp['Length'], 'Length'), 
      array($temp['Waist'], 'Waist') 
     ); 
    } 
    return $malformed; 
} 
+0

Vous avez raison, je vais travailler sur le script qui génère le tableau. – Toxid

+0

Je pensais que je vous ferais savoir que lorsque j'ai regardé le code et ajouté des touches assossiatives, le script fonctionnait avec un code beaucoup plus propre qu'auparavant. Comme je suis assez nouveau avec php, j'avais complètement oublié à quel point les noms de domaine peuvent être utiles. Donc merci! – Toxid

+0

Pas de problème! Vous êtes les bienvenus. – Stephen

Questions connexes