php 将数组显示为表格

9rygscc1  于 2023-06-04  发布在  PHP
关注(0)|答案(9)|浏览(445)

我正在尝试使用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>

我得到的结果是项目的第一个字符:
不确定我做错了什么?你能解释一下吗。
更新:
没有错误的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)和标记 Package 的$result变量的输出< PRE >

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行或多行元素。

ibrsph3r

ibrsph3r1#

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

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

而实际上你可能想做的是

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

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

wgx48brx

wgx48brx2#

你的数据结构不是矩阵而是数组:
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 )
    ........
);

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

oogrdqng

oogrdqng3#

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

foreach($ array as $ values)
{

echo "<tr><td>";

echo "$ values";

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

?>

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

kyks70gy

kyks70gy4#

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

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

omvjsjqw5#

如果数组是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>
6l7fqoea

6l7fqoea6#

这将以比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>";
}
vh0rcniy

vh0rcniy7#

这也将工作:

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

ssgvzors8#

除了@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>";
o7jaxewo

o7jaxewo9#

function array_to_table($array, $th_color = '#333', $td_color = "black", $font_family = "arial", $font_size = "12px"){
$array = json_decode(json_encode($array), true);
$tr = '';
$th = '<th style="border: 1px solid #eee;padding: 11px 21px; text-align:center; vertical-align:middle; background-color:#f7f7f7; color:' . $th_color . ';font-family:' . $font_family . '; font-size:14px">#</th>';
$isFetchedHeaders = false;
$i = 0;
foreach ($array as $row) {
    $td = '';
    $td .= '<td style="padding: 7px 11px; border: 1px solid #eee;text-align:center; vertical-align:middle; color:' . $td_color . ';font-family:' . $font_family . '; font-size:' . $font_size . '">' . ++$i . '</td>';
    foreach ($row as $column_key => $column) {
        if (!$isFetchedHeaders) {
            $th .= '<th style="border: 1px solid #eee;padding: 11px 21px; text-align:center; vertical-align:middle; background-color:#f7f7f7; color:' . $th_color . ';font-family:' . $font_family . '; font-size:14px">' . $column_key . '</th>';
        }
        $td .= '<td style="padding: 7px 11px; border: 1px solid #eee;text-align:center; vertical-align:middle; color:' . $td_color . ';font-family:' . $font_family . '; font-size:' . $font_size . '">' . $column . '</td>';
    }
    if (!$isFetchedHeaders) {
        $tr .= '<tr>' . $th . '</tr>';
    }
    $isFetchedHeaders = true;
    $tr .= '<tr>' . $td . '</tr>';
}
$table = '<table border="0" style="border-spacing: 0;">' . $tr . '</table>';
return $table;}

相关问题