【问题标题】:Display Array as a Table将数组显示为表格
【发布时间】:2012-12-12 09:46:57
【问题描述】:

我正在尝试使用 PHP/HTML 打印表格。存储在数组中的数据如下:

Array ( [id] => 1 [first_name] => mike [last_name] => lastname )

我的代码如下。它运行并且没有错误,但是输出不如预期。这是 PHP/HTML 代码:

<table>

<tr>
    <th>1</th>
    <th>2</th>
    <th>3</th>
</tr>

<?php foreach ($res as $item): ?>
<tr>
     <td><?php echo $item['id'] ?></td>
     <td><?php echo $item['first_name'] ?></td>
     <td><?php echo $item['last_name'] ?></td>
</tr>
<?php endforeach; ?>

</table>

我得到的结果是项目的第一个字符:

1       2      3
1       1      1
m       m      m
l       l      l

不确定我做错了什么?非常感谢您的解释。

更新:

没有错误的PHP代码:

<?php 
    foreach ($result as $row) 
    { 
        echo '<tr>';
        echo '<td>' . $row['id'] . '</td>';
        echo '<td>' . $row['first_name'] . '</td>';
        echo '<td>' . $row['last_name'] . '</td>';
        echo '</tr>';
    }
?>

这是我的数组,其中只有一个“行”:

使用

 标签包裹的 print_r($result) 输出 $result 变量

Array
(
    [id] => 3
    [first_name] => Jim
    [last_name] => Dude
)

这是我得到的结果:

实际表格结果:

ID    First Name  Last Name
3     3           3
J     J           J
D     D           D

但是,如果我在数组中有 0 或超过 1(意味着 2 或更多),它会完美运行。当我在数组中只有一个“行”元素时,它就不起作用了。例如这个数组,完美的工作:

  Array
    (
    [0] => Array
        (
            [id] => 3
            [first_name] => Jim
            [last_name] => Dude
        )

    [1] => Array
        (
            [id] => 4
            [first_name] => John
            [last_name] => Dude2
        )
    )

我得到这个结果:

ID      First Name    Last Name
3       Jim         Dude
4       John            Dude2

我不确定我做错了什么。这个想法是不知道 Table 中有多少项目将其读入 $result 变量,然后使用此变量打印 HTML 表中的所有元素。表格可以包含 O 个元素、1 行元素、1 行或更多行元素。

【问题讨论】:

标签: php html arrays html-table


【解决方案1】:

你的数据结构不是矩阵而是数组:

Array ( [id] =&gt; 1 [first_name] =&gt; mike [last_name] =&gt; lastname )

你需要这样的东西来做你想做的事:

Array(
    [0] => Array ( [id] => 1 [first_name] => mike [last_name] => lastname ),
    [1] => Array ( [id] => 1 [first_name] => mike [last_name] => lastname )
    ........
);

除此之外,代码看起来还不错...

【讨论】:

  • 我从那里删除了 foreach,现在它可以正确显示项目。我只是不确定是否像您在您的案例中提到的那样,我有更多“行”,如果没有 foreach,我将如何移动到下一个?如果我的程序有一个只有一个“行”的数组会发生什么?
  • 嗯,正确生成数据结构是关键问题。您需要回答以下问题:“我期望多行吗?”、“我期望没有行吗?”甚至“我每次都期望单排吗?”。如果您将有多行,您需要for/foreach 循环。请允许我在这里更具体一些,问一下您要构建什么?
【解决方案2】:

不要删除你的 foreach 循环。如果没有看到您构建数组的代码,我猜您正在这样做:

$res = array('id' => 1, 'first_name'=>'mike', 'last_name'=>'lastname');

实际上你可能想要做的是:

$res[] = array('id' => 1, 'first_name'=>'mike', 'last_name'=>'lastname');

括号 [ ] 将所有值的数组添加到您的数组中。这样,您可以将每个值作为值的集合而不是单个值进行循环。

【讨论】:

    【解决方案3】:

    这就是我解决网页中遇到的类似问题的方法。我希望该页面显示特定教师使用会话变量教授的所有课程的数组。我希望,即使该主题可能与您无关,但总体要点将帮助人们。

    <?php 
    
        echo "<table border='1' style='border-collapse: 
        collapse;border-color: silver;'>";  
        echo "<tr style='font-weight: bold;'>";  
        echo "<td width='150' align='center'>Class</td>";  
        echo "</tr>";
    
        foreach ($query_class_array as $row) 
         { 
          echo '<td width="150" align=center>' . $row['Class'] . '</td>';
          echo '</tr>';
         }
    ?>
    

    【讨论】:

    • 您需要关闭表格标签。
    【解决方案4】:
    <? Php
    echo "<table border="2">";
    
    foreach($ array as $ values)
    {
    
    echo "<tr><td>";
    
    echo "$ values";
    
    echo "</td></tr>";
    }
    
    ?>
    

    我写这个是为了将单个数组值打印到表中

    【讨论】:

      【解决方案5】:

      如果数组是std对象类型,不能用[],而是用->来获取具体的实体

      <!DOCTYPE html>
      <html>
      <body>
      <table>
      
      <tr>
          <th>id</th>
          <th>First name</th>
          <th>Last name</th>
          <th>email</th>
          </tr>
      
      <?php 
      
      foreach($data as $item) {?>
      
      <tr>
           <td><?php echo $item->id; ?></td>
           <td><?php echo $item->first_name; ?></td>
           <td><?php echo $item->last_name ;?></td>
           <td><?php echo $item->email;?></td>
      
       </tr>
      
      <?php  }?>
      
      </table>
      </body>
      </html>
      

      【讨论】:

        【解决方案6】:

        这将以比 print_r 更易读的格式显示任何多维数组...可以使用不同颜色升级为连续单元格以快速滚动数组...您看不到数组名称的空间(键) 或 value 会告诉你键/值,如果你将它悬停......视觉上不愉快但有效。

        function show_array_as_table($array,$key_color='blue',$value_color="black",$fontfamily="arial",$fontsize="12pt") {
        echo "<table style='color:{$color}; font-family:{$fontfamily}; font-size:{$fontsize}'>";
            foreach($array as $key => $value) {
            echo "<tr>";
                // key cell
            echo "<td title=\"{$key}\" style='width:150pt; height:25pt; text-align:right; vertical-align:top; background-color:cccccc; color:{$key_color}'><b>{$key}</b></td>";
                // value cell (will contain a table if the value is an array)
            echo "<td style='width:300pt; height:25pt; text-align:justify; vertical-align:top; color:{$value_color}'>";
                if (is_array($value)) {
                show_array_as_table($value,$key_color,$color,$fontfamily,$fontsize);
                } else {
                echo "<i>{$value}</i>";
                }
            echo "</td>";
            echo "</tr>";
            }
        echo "</table>";
        }
        

        【讨论】:

          【解决方案7】:

          这也可以:

          echo "<table>";
          foreach ($result as $key){
          echo "
          <tr>
          <td>'".$key['id']."'</td>
          <td>'".$key['first_name']."'</td>
          <td>'".$key['last_name']."'</td>
          </tr></table>
          ";
          }
          

          【讨论】:

            猜你喜欢
            • 2013-11-14
            • 2017-12-01
            • 1970-01-01
            • 2021-11-05
            • 2023-03-14
            • 2020-06-15
            • 1970-01-01
            • 1970-01-01
            • 2021-03-22
            相关资源
            最近更新 更多