2012-12-08 23 views
-1

我試圖把複選框數組數據放入3列的表格中。如何格式化具有指定列數的表格中的數組數據?

我有一個名爲$a數組,它包含26個數據,從A到Z

然後我有一個名爲$b另一個數組,它包含一些數據。

我想用數組$a中的數據創建一個有26個複選框的3列表。

如果數據包含在$b中,則其複選框將被檢查,否則未選中。

以下是我的代碼。我不知道如何格式化循環,所以複選框和表格將正確顯示。請幫忙。

<html> 
<body> 
<table> 
<?php 

$a = array("A", "B", "C", "D", "E","F","G","H","I","J","K","L","M","N","O","P","Q","R","s","T","U","V","W","X","Y","Z"); 
$b = array("A","C","G","L","O","P","R","X","Z"); 
$a_size=count($a); 

$tr=$a_size/3; 
$reminder=$a_size%3; 

if ($reminder!=0) 
{ 
$tr+=1; 
} 

for($i=0;$i<$tr;$i++) 
{ 
echo "<tr>"; 
foreach ($b AS $c) 
{ 
    for($j=0;$j<3;$j++) 
    { 
     if(in_array($c,$b)) 
     { 
      echo "<td><input name=\"system[]\" type=\"checkbox\" value=\"$c\" CHECKED> $c </td>"; 
     } 
     else 
     { 
      echo "<td><input name=\"system[]\" type=\"checkbox\" value=\"$c\"> $c </td>"; 
     } 
    } 
} 
echo "</tr>"; 
} 
?> 
</table>             
</body> 
</html>              

回答

2

我覺得你讓它有點過於複雜!以下是我將如何處理這種情況:

<?php 
    $a = array("A", "B", "C", "D", "E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); 
    $b = array("A","C","G","L","O","P","R","X","Z"); 
?> 
<table> 
    <?php foreach ($a as $k => $v) : ?> 
    <tr> 
     <td><?php echo $v; ?></td> 
     <td><input type="checkbox" name="system[]" value="<?php echo $v; ?>" <?php if (in_array($v, $b)) echo 'checked'; ?> /></td> 
     <!-- add as many td's here as you like --> 
    </tr> 
    <?php endforeach; ?> 
</table> 

下面是另一種「翻轉」佈局的方法。

<?php 
    $a = array("A", "B", "C", "D", "E","F","G","H","I","J","K","L","M","N","O","P","Q","R","s","T","U","V","W","X","Y","Z"); 
    $b = array("A","C","G","L","O","P","R","X","Z"); 
?> 
<table> 
    <?php for ($i = 0; $i < 3; $i++) : ?> 
    <tr> 
     <?php foreach($a as $k => $v) : ?> 
     <td><?php echo $v; ?><input type="checkbox" name="system[]" value="<?php echo $v; ?>" <?php if (in_array($v, $b)) echo 'checked'; ?> /></td> 
     <?php endforeach; ?> 
    </tr> 
    <?php endfor; ?> 
</table> 

我們在聊天討論後我的代碼,你正在尋找:

<table> 
    <tr> 
    <?php for($i = 1; $i < count($a); $i++) : $j = $i-1; ?> 
     <td><?php echo $a[$j]; ?><input type="checkbox" name="system[]" value="<?php echo $a[$j]; ?>" <?php if (in_array($a[$j], $b)) echo 'checked'; ?> /></td> 
     <?php if($i % 3 === 0) echo '</tr><tr>'; ?> 
    <?php endfor; ?> 
    </tr> 
</table> 
+0

智能編碼!我喜歡它,但它顯示在單列中。我怎樣才能讓他們成爲3列? – Newbie

+1

@Newbie只需添加更多'​​'它說這個'<! - 在這裏添加儘可能多的td - >':) – Dale

+1

+1僅適用於替代語法。 – Charles