2015-11-02 31 views
1

我想从嵌套的foreach循环创建一个简单的html表。实际数据将存储在我的数据库中。 我想要一个表格如下:从嵌套的PHP foreach循环创建表

--------------------- 
1 | A | red  | 
--------------------- 
2 | B | blue | 
--------------------- 
3 | C | yellow | 
--------------------- 
4 | D | orange | 
--------------------- 


$values1 = "1,2,3,4"; 
$values2 = "A,B,C,D"; 
$values3 = "red,blue,yellow,orange"; 

$var1 = explode(',', $values1); 
$var2 = explode(',', $values2); 
$var3 = explode(',', $values3); 

echo '<table>'; 

    foreach ($var1 as $row1) { 
     echo '<tr>'; 
     echo '<td>'.$row1.'</td>'; 

     foreach ($var2 as $row2) { 
      echo '<td>'.$row2.'</td>'; 
     } 
     foreach ($var3 as $row3) { 
      echo '<td>'.$row3.'</td>'; 
     } 
     echo '</tr>'; 
    } 

echo '</table>'; 

回答

2

此代码:

<?php 
$values1 = "1,2,3,4"; 
$values2 = "A,B,C,D"; 
$values3 = "red,blue,yellow,orange"; 

$var1 = explode(',', $values1); 
$var2 = explode(',', $values2); 
$var3 = explode(',', $values3); 

echo '<table border="1">'; 
for($i = 0; $i < count($var1); $i++){ 
    echo '<tr>'; 
    echo '<td>'.$var1[$i].'</td>'; 
    echo '<td>'.$var2[$i].'</td>'; 
    echo '<td>'.$var3[$i].'</td>'; 
    echo '</tr>'; 
} 


echo '</table>'; 
+0

fico从ME偷走了这个。我甚至有'border =“1”' – dcromley

+0

哈哈你的答案在哪里? – fico7489

2

我认为这可以帮到你。直接将数值定义为数组,并用foreach循环表示它们。这更像是mysql_fetch_array代表从数据库获取的记录的方式。

$values = []; 
$values[] = [1, "A", "red"]; 
$values[] = [2, "B", "blue"]; 
$values[] = [3, "C", "yellow"]; 
$values[] = [4, "D", "orange"]; 

echo '<table>'; 
    foreach ($values as $value) { 
     echo '<tr>'; 
     echo '<td>'.$value[0].'</td>'; 
     echo '<td>'.$value[1].'</td>'; 
     echo '<td>'.$value[2].'</td>'; 
     echo '</tr>'; 
    } 
echo '</table>'; 
+1

好吧,你改变了OP的输入数据(数组) –

0

如果你使用$var1为“基地”阵列,可以很方便检查是否有其他阵列也含有相同的指标(长度相同$var1)至避免PHP警告。

foreach ($var1 as $key => $value) { 
    echo '<tr>'; 
    echo '<td>'.$value.'</td>'; 
    echo '<td>'.(isset($var2[$key]) ? $var2[$key] : '').'</td>'; 
    echo '<td>'.(isset($var3[$key]) ? $var3[$key] : '').'</td>'; 
    echo '</tr>'; 
}