8

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

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

使用 <PRE> 标签包裹的 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

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

4

8 回答 8

3

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

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

实际上,您可能想要做的是:

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

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

于 2012-12-26T23:18:50.930 回答
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 )
    ........
);

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

于 2012-12-26T22:59:38.020 回答
2
<? Php
echo "<table border="2">";

foreach($ array as $ values)
{

echo "<tr><td>";

echo "$ values";

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

?>

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

于 2015-11-15T19:19:02.047 回答
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>';
     }
?>
于 2013-10-11T13:01:07.630 回答
1

这将以比 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>";
}
于 2019-07-21T01:50:10.770 回答
1

如果数组是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>
于 2018-03-07T06:28:17.880 回答
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>
";
}
于 2019-08-08T11:44:17.060 回答
0

除了@Phrank,当我这样做时,它对我更有用

function  show_array_as_table($array,$key_color='blue',$value_color="black",$fontfamily="arial",$fontsize="12pt") {

    foreach($array as $key => $value) {
        if (is_array($value)) {
    echo "<tr>";
    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>";
        show_array_as_table($value,$key_color,$value_color,$fontfamily,$fontsize);
    echo "</tr>";
        } else {
    echo "<td style='width:300pt; height:25pt; text-align:justify; vertical-align:top; color:{$value_color}'>";
        echo "<i>{$value}</i>";
    echo "</td>";
        }
    }
}


echo "<table class='table'>";
echo show_array_as_table($reader);
echo "</table>";
于 2022-02-10T11:03:29.067 回答