2011-06-10 5 views
1

Ok, je suis encore aux prises avec mes tableaux ... J'ai créé un tableau bidimensionnel et enregistré dans une session pour obtenir des résultats sur une autre page: $ _SESSION ['myARRAY']Sortie tableau à deux dimensions

print_r($_SESSION['myARRAY']); 

// will output: 
Array ([Car] => Array ([0] => 1 [1] => 9 [2] => 0) 
     [Truck] => Array ([0] => 2 [1] => 10 [2] => 0) 
     [Bus] => Array ([0] => 1 [1] => 8 [2] => 2)) 

maintenant je dois sortir les données dans le format suivant:

$xls->addRow(Array("Car",1,9,0)); 
$xls->addRow(Array("Truck",2,10,0)); 
$xls->addRow(Array("Bus",1,8,2)); 

J'ai essayé de faire quelque chose comme ceci:

foreach($_SESSION['myARRAY'] AS $key => $value) { 

    $arr[$key] = $key; 

    foreach($value AS $k => $v) { 
     $arr[$key] = $v; 
    } 

    $xls->addRow($arr[$key]); 
} 

mais ça n'a pas vraiment marché. Je pense que je suis proche mais pas tout à fait là ...

Répondre

5

$value est déjà un tableau. Vous n'avez plus qu'à y ajouter le $key. Vous pouvez utiliser array_unshift:

foreach($_SESSION['myARRAY'] AS $key => $value) { 
    array_unshift($value, $key); 
    $xls->addRow($value); 
} 

Bien sûr, si vous faites cela plus d'une fois, vous devriez envisager de stocker le tableau consolidé.

+1

'value' $ est déjà une copie puisqu'il n'est pas une référence. Je ne vois pas l'intérêt de faire la deuxième copie, surtout si la boucle ne fait que ça. – Matthew

+0

@konforce: Vrai, j'ai oublié ça ... Je suis un peu confus parce que 'array_unshift' fonctionne sur place ... a changé. –

1

Je serais probablement utiliser array_unshift comme il semble que d'une manière plus appropriée pour résoudre ce problème, mais vous pouvez aussi le faire comme:

foreach($_SESSION['myARRAY'] AS $key => $value) { 
    $xls->addRow(array_merge(array($key), $value)); 
}