繁体   English   中英

HTML表格中的PHP数组

[英]PHP arrays in HTML table

我有3个PHP数组,我把它放在HTML表格中。 表头正确显示但数据没有。 那是<td>的。 表行和<td>显示在彼此之下而不是列中。 我怎样才能解决这个问题?

这是我的代码:

echo '<table border="1"><tr><th><b>Gebruikersnaam</b></th><th>Functie</th><th>E-mailadres</th></tr>';
sort($result);

foreach($result as $key)
{
  echo '<tr>';
  echo '<td>'.$key.'</td>';
  echo '</tr>'; 
}

foreach ($result as $key=>$function)
  {
    $check = $adldap->user()->info($function, array("title"));
    $title = $check[0]['title'][0];
    if(empty($title)) {
    echo '<td>Geen functie</td>';
    } else {
    echo '<tr>';
    echo '<td>'.$title.'</td>';
    echo '</tr>';
    }
    }
foreach ($result as $key=>$function)
{
    $check = $adldap->user()->info($function, array("mail"));
    $title = $check[0]['mail'][0];
      echo '<tr>';
    echo '<td>'.$title.'</td>';  
      echo '</tr>';
}
echo '</table>';
}

这是一个想法我的问题是什么:

| Column 1        |  Column 2      |  Column 3        |
----------------------------------------------------
|   value1        |                |                  |
|---------------------------------------------------
|   value2        |                |                  |
|---------------------------------------------------
|   value3        |                |                  |
|---------------------------------------------------
|   value4 etc    |                |                  |
|---------------------------------------------------

所有数组都出现在第一列中。 我用<tr> <td>没什么用。

编辑这是$ result变量。 (使用ADLDAP php类)。

$result = $adldap->group()->members($groepbekijken, $sorted = true);

你正在构建不正确的html,在每个<td></td>你还有一个</tr>结束标记。

foreach($result as $key)
{
  echo '<tr>';
  echo '<td>'.$key.'</td>';
  echo '</tr>'; 
}

在这里你只输出1

foreach ($result as $key=>$function)
  {
    $check = $adldap->user()->info($function, array("title"));
    $title = $check[0]['title'][0];
    if(empty($title)) {
    echo '<td>Geen functie</td>';
    } else {
    echo '<tr>';
    echo '<td>'.$title.'</td>';
    echo '</tr>';
    }
    }

在这里输出<td></td>或输出<tr><td><td></tr>

foreach ($result as $key=>$function)
{
    $check = $adldap->user()->info($function, array("mail"));
    $title = $check[0]['mail'][0];
      echo '<tr>';
    echo '<td>'.$title.'</td>';  
      echo '</tr>';
}

在这里输出<tr><td></td></tr>

那么,问题是什么呢? 好吧,你的代码很乱。 对不起,但确实如此。

你有三次相同$结果的foreach。 为什么?

把它放在一个foreach中,使它更具可读性:

foreach ( $result as $key => $functions )
{
    echo '<tr>';

        echo '<td>'.$key.'</td>';

        $check = $adldap->user()->info($function, array("title"));
        $title = $check[0]['title'][0];

        if( empty($title) )
        {
            echo '<td>Geen functie</td>';
        } else
        {
            echo '<tr>';
            echo '<td>'.$title.'</td>';
            echo '</tr>';
        }

        $check = $adldap->user()->info($function, array("mail"));
        $title = $check[0]['mail'][0];
        echo '<tr>';
            echo '<td>'.$title.'</td>';  
        echo '</tr>';


    echo '</tr>';
}

但话说回来,这仍然是糟糕的代码。 不要混淆演示文稿'html'和逻辑'那$ adlap-> thing'。

请不要在函数中回显东西。 将其作为字符串返回,然后回显它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM