2014-09-30 78 views
0

我想在PHP的规划委员会,我希望它看起来像这样(表):PHP规划表板

名1         X
名2
NAME3
NAME4                                                                                 X
                       星期一|星期二|星期三

我有2个foreaches,1个名字和1个数据。

foreach($names) { 
    foreach($data) { 
     <tr> 
     <td> $names </td> 
     <td> if data['data'] == 1 { X }</td> 
     <td> if data['data'] == 2 { X }</td> 
     <td> if data['data'] == 3 { X }</td> 
     </tr> 
    } 
} 

但是这段代码复制了名称。当我把tr和td $名称放在其他foreach中时,它会创建比4更多的字段。我怎样才能结合这些foreaches?

我希望有人能帮助我。

+0

哪里你的名字$阵列从何而来?你如何定义它?或者它来自数据库查询? – 2014-09-30 09:09:11

+0

$ names是一个包含数据库名称的数组 – 2014-09-30 09:10:39

+0

我们可以看到$ names和$ data的一些示例数据吗?另外,您输出的所有$名称 – andyroo 2014-09-30 09:10:40

回答

0

不知道你的数组包含什么,但对于初学者,你输出所有的名称值,应该是这样的。

现在,我们有数组

$data = array(array("id" => 1, "data" => 0), array("id" => 2, "data" => 1)) 

你的代码,希望成为像..

<?php 
    foreach($names as $key => $value) { 
     $d = $data[$key]['data']; ?> 
     <tr> 
     <td> <?php echo $value; ?> </td> 
     <td> <?php if ($d == 1) { echo 'X'; } ?></td> 
     <td> <?php if ($d == 2) { echo 'X'; } ?></td> 
     <td> <?php if ($d == 3) { echo 'X'; } ?></td> 
     </tr><?php 
    } 

?> 
0

我认为在这种情况下,你将需要2个foreach循环,嵌套递归ISN除非你嵌套了几层深的东西,而且很难调试,否则这是一件坏事。

你可能需要的是这样的:

//each row is a name 
foreach($names as $name){ 
    echo "<tr>";//<-- new row 
    $x = 1;//counter 
    //each data is a column 
    foreach($data as $d){ 
     echo "<td>";//<-- new column 
     if($d == $x){// is $d equal to 1,2,3,4,[n] 
      echo "X"; 
     } 
     echo "</td>"; 
     $x++;//increment counter 
    } 
    echo "</tr>"; 
}