2009-09-03 10 views
0

J'ai un tableau qui ressemble à ceTransformer un tableau à plusieurs instructions SQL

Array 
(
[provider] => Array 
    (
     [id] => provider1 
     [distribuitor] => Array 
      (
       [0] => Array 
        (
         [name] => distribuitor1 
         [machines] => Array 
          (
           [0] => Array 
            (
             [id] => MX3 
             [installDate] => 2009-01-01 
            ) 

           [1] => Array 
            (
             [id] => MX4 
             [installDate] => 2008-01-01 
            ) 

           [2] => Array 
            (
             [id] => MX7 
             [installDate] => 2009-05-05 
            ) 

          ) 

        ) 

       [1] => Array 
        (
         [name] => distribuitor2 
         [machines] => Array 
          (
           [0] => Array 
            (
             [id] => FX3 
             [installDate] => 2009-11-15 
            ) 

           [1] => Array 
            (
             [id] => GX4 
             [installDate] => 2008-07-22 
            ) 

           [2] => Array 
            (
             [id] => RX7 
             [installDate] => 2009-06-25 
            ) 

          ) 

        ) 

      ) 

    ) 

) 

de ce tableau que je veux générer une série d'instructions SQL comme ceci:

INSERT INTO table1 VALUES ('provider1','distrubuitor1','MX3','2009-01-01') 
INSERT INTO table1 VALUES ('provider1','distrubuitor1','MX4','2008-01-01') 
INSERT INTO table1 VALUES ('provider1','distrubuitor1','MX7','2009-05-05') 
INSERT INTO table1 VALUES ('provider1','distrubuitor2','FX3','2009-11-15') 
INSERT INTO table1 VALUES ('provider1','distrubuitor2','GX4','2008-07-22') 
INSERT INTO table1 VALUES ('provider1','distrubuitor2','RX7','2009-06-25') 

Je suis pas très bien versé sur les manipulations de tableau alors ma question est: comment puis-je y parvenir?

Point bonus:
Si vous pouvez fournir des liens vers des ressources où je peux en savoir plus sur ce sujet.
La réponse devrait fonctionner de préférence avec des tableaux imbriqués 'illimités'.

P.D.
Je ne suis pas un locuteur natif anglais, je sais que le titre de ma question devrait être plus générique, si vous avez un meilleur titre, s'il vous plaît le changer.

Répondre

1

Si les clés du tableau sont statiques alors l'espoir qu'il aide.

foreach($array as $key => $value) 
{ 
    foreach($value['distrubuitor'] as $k => $val) 
    { 
     foreach($val['machines'] as $m => $v) 
     { 
      mysql_query("INSERT INTO table1 VALUES ('".$value['id']."','".$val['name']."','".$v['id']."','".$v['installdate']."')"); 
     } 
    } 
} 
0

Vous pouvez utiliser une fonction récursive pour que cela fonctionne pour l'imbrication illimitée:

Function FlattenArray($previousvalues,$currentarrray) { 
    foreach($currentarray as $arraykey => $arrayitem) { 
     if(is_array($arrayitem)) { 
      $temp = $previousvalues.",'".$arraykey."'"; 
      FlattenArray($temp,$arrayitem); 
     } 
     else { 
      $query = "INSERT INTO table1 VALUES(".$previousvalues.",'".$arrayitem."')"; 
      mysql_query($query); 
     } 
    } 
} 

appeler ensuite votre fonction avec les variables de départ appropriées. Assurez-vous que table1 dispose de suffisamment de colonnes pour gérer l'imbrication la plus grande possible ou que mysql_query échoue.