将阵列显示为表格

时间:2012-12-26 22:55:30

标签: php html arrays html-table

我正在尝试使用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>';
    }
?>

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

使用包装为&lt;的print_r($ result)输出$ result变量PRE&gt;标签

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

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

7 个答案:

答案 0 :(得分:3)

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

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

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

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

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

答案 1 :(得分:2)

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

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

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

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

除此之外,代码似乎很好......

答案 2 :(得分:1)

这就是我解决了与网页类似的问题。我希望页面显示特定教师使用会话变量教授的所有类的数组。我希望,即使这个主题可能与你无关,一般的要点也会帮助别人。

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

答案 3 :(得分:1)

<? Php
echo "<table border="2">";

foreach($ array as $ values)
{

echo "<tr><td>";

echo "$ values";

echo "</td></tr>";
}

?>

我写这个用于将单个数组值打印到表中

答案 4 :(得分:1)

如果数组是std对象类型,则不能使用[],而是使用 - &gt;获得特定实体

<!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>

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

这也将起作用:

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