【问题标题】:PHP arrays in HTML tableHTML表格中的PHP数组
【发布时间】:2014-07-08 11:39:14
【问题描述】:

我有 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    |                |                  |
|---------------------------------------------------

所有数组都出现在第一列。我用&lt;tr&gt; &lt;td&gt; 没有用。

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

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

【问题讨论】:

  • 能否也列出$result的内容是什么?
  • 我用 $result 变量更新了我的帖子。
  • 欢迎使用命令 var_dump($result) 的结果。它将向我们展示您在其中存储的内容,因为问题可能出在其中。

标签: php html arrays foreach html-table


【解决方案1】:

您正在构建不正确的 html,在每个 &lt;td&gt;&lt;/td&gt; 之后,您还有一个 &lt;/tr&gt; 结束标记。

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>';
    }
    }

在这里你或者输出&lt;td&gt;&lt;/td&gt;或者你输出&lt;tr&gt;&lt;td&gt;&lt;td&gt;&lt;/tr&gt;

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>';
}

在这里你输出&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;

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

您对相同的 $result 进行了 3 次 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-> 东西”混为一谈。

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

【讨论】:

    猜你喜欢
    • 2016-04-12
    • 2012-01-16
    • 2019-08-13
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2018-01-29
    • 1970-01-01
    相关资源
    最近更新 更多