我正在尝试使用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行或更多行元素。
答案 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>
";
}