2010-04-06 5 views
3

tableau commence comme ceci:tableau Réorganiser

Array ( 
    [SMART Board] => Array ([0] => sb1 [1] => sb2 [2] => sb3) 
    [Projector] => Array ([0] => pr1 [1] => pr2 [2] => pr3) 
    [Speakers] => Array ([0] => sp1 [1] => sp2 [2] => sp3) 
    [Splitter] => Array ([0] => spl1 [1] => spl2 [2] => spl3) 
    [Wireless Slate] => Array ([0] => ws1 [1] => ws2 [2] => ws3) 
) 

Les touches sont utilisées comme mes titres de colonnes de table. Leurs tableaux individuels doivent porter les informations de la colonne.

Je le diviser encore plus loin avec array_slice et array_merge_recursive regarder joli que 2 tableaux - 1 contient les noms de colonnes, les autres se présente comme suit:

Array ( 
    [0] => sb1 
    [1] => sb2 
    [2] => sb3 
    [3] => pr1 
    [4] => pr2 
    [5] => pr3 
    [6] => sp1 
    [7] => sp2 
    [8] => sp3 
    [9] => spl1 
    [10] => spl2 
    [11] => spl3 
    [12] => ws1 
    [13] => ws2 
    [14] => ws3 
) 

Cependant, en essayant d'écrire le tableau I obtiens les clés 0, 1, 2 comme les données de la colonne, puis la rupture de la ligne puis 3, 4, 5 puis la rupture de la ligne ... etc

J'ai besoin qu'il soit 0, 3, 6, 9, 12 rang break 1, 4, 7, 10, 13 rangs casser etc ...

Comment puis-je soit réorganiser ma tableau pour permettre cela, ou réécrire comment les données vont dans la table afin que l'information correcte s'aligne avec la colonne appropriée?

foreach(unserialize($dl->data) as $data){ 

    //first 3 are specialinstructions, system, and room 
    $uniques = array_slice($data,0,3); 

    $rows = array_slice($data,3); 
    $rows2 = array_merge_recursive($rows2, $rows); 

    //get the specialinstructions, system, and room 
    foreach($uniques as $unique){ 
     echo $unique."<br/>"; 
    }///foreach uniques 

    echo "<br>"; 

}///foreach unserialized 

$numberofrooms = count($rows2[key($rows2)]); 
$numberofproducts = count($rows2); 
print_r($rows2); 

unset($rows); 

//write the individual rows 
foreach($rows2 as $header=>$rowset){ 

    $headers[] = $header; 

    foreach($rowset as $row){ 

     $rows[] = $row; 

    }//foreach rowset 

}//foreach rows2 

echo "<p>"; 
print_r($rows); 

echo '<table class="data-table"> 
      <caption>DL</caption> 

      <thead><tr>'; 
foreach($headers as $header){ 
    echo "<th>".$header."</th>"; 
} 
echo '</tr></thead>'; 
echo '<tbody>'; 
$i = 0; 
foreach($rows as $row){ 
    if($i == 3 || $i == 0){ 
     echo "<tr>"; 
     $i = 1; 
    } 
    echo '<td>'.$row.'</td>'; 
    if($i == 2){ 
     echo "</tr>"; 
    } 
    $i++; 
} 
echo '</tbody></table>'; 
+0

Comme un indice: Imo il est beaucoup plus facile de saisir la structure du code si vous ne «echo» le HTML. Procédez ainsi, par exemple: ' ' –

+0

Merci Felix, je vais normalement avec ça. Cependant, cela est enveloppé dans une fonction et je pense qu'il est plus propre de voir exactement ce que je produis. – bradenkeith

Répondre

1

Vous pouvez utiliser le tableau original et le code suivant pour afficher la façon dont vous voulez:

$i=0; 
while($i<3){ // 3 is the number of items in each array 
    foreach($originalArray as $arr){ 
     print($arr[$i].'<br/>'); 
    } 
    print('<hr/>'); 
    $i++; 
} 

Non testé mais vous devriez obtenir la dérive.

+0

Parfait! Une petite modification pour s'adapter à mon script et au bingo, nous avons un gagnant. Merci beaucoup zaf! "; \t \t $ j = 0; \t \t while ($ j <$ de numberofproducts) { \t \t \t echo "". $ Lignes [$ numberofrooms * $ j + $ i]. '; \t \t \t $ j ++; \t \t} \t $ i ++; } ?> (Je n'ai aucune idée de comment faire le code php dans les commentaires, mes excuses) – bradenkeith

+2

Si vous avez trouvé cela utile, alors vous devriez cliquer sur la flèche vers le haut. Une fois va faire;) – zaf

+0

Je ne peux pas comme je n'ai pas encore 15 rep ... J'ai essayé:/ – bradenkeith

Questions connexes