假设你有一个像这样的数组:
Array([0] => Array([first_name] => Stack [last_name] => Overflow)
[1] => Array([first_name] => Andrew [last_name] => Oliveira)
);
通过以下方式填充表格很容易:
<th>first name</th>
<th>last name</th>
<? foreach($info as $key => $data) { ?>
<tr>
<td><?= $data['first_name'] ?> </td>
<td><?= $data['last_name'] ?> </td>
<tr>
<? } ?>
上面会产生一个这样的表:
first name || last name
========================
Stack-------|| Overflow
========================
Andrew----|| Oliveira
========================
等等......但是如果给出相同的数组,你会如何做这样的表:
person 0 || person 1
========================
Stack-----|| Andrew
========================
Overflow|| Oliveira
========================
答案 0 :(得分:1)
这样的东西?
<?php
// create line with "Person X"
echo '<tr>';
$s = sizeof ($info);
for ($i=0;$i<$s;++$i) {
echo '<td>Person '.$i.'</td>';
}
echo '</tr><tr>';
// create line with first name
foreach ($info as $data) {
echo '<td>'.$data['first_name'].'</td>';
}
echo '</tr><tr>';
// create line with last name
foreach ($info as $data) {
echo '<td>'.$data['last_name'].'</td>';
}
echo '</tr>';
?>
答案 1 :(得分:0)
是的,事实上很容易,但使用这种方法:
<?php $COUNT_INFO=count($info); ?>
<th>first name</th>
<th>last name</th>
<tr>
<? for($i=0; $i<$COUNT_INFO; $i++) { ?>
<td><?= $info[$i]['first_name'] ?> </td>
<? } ?>
</tr>
<tr>
<? for($i=0; $i<$COUNT_INFO; $i++) { ?>
<td><?= $info[$i]['last_name'] ?> </td>
<? } ?>
<tr>
答案 2 :(得分:0)
制作两个数组,一个用于名字,另一个用于姓氏。之后,使用foreach
循环遍历它们并连接表格的第一行和第二行。
foreach($array as $i=>$data){
$headers .= "<th>Person $i</th>";
$first_names .= "<td>".$data["first_name"]."</td>";
$last_names .= "<td>".$data["first_name"]."</td>";
}
echo "<table>
<tr>$headers</tr>
<tr>$first_names</tr>
<tr>$last_names</tr>
</table>";
你去吧!只需一个循环! :)
答案 3 :(得分:0)
@ Vitor42的答案还可以,但是如果你想要更通用的东西,并且你确信数据总是完整的,请尝试:
<table>
<?php
$info = array(
array('first_name'=>'Stack','last_name'=>'Overflow'),
array('first_name'=>'Andrew','last_name'=>'Oliveira')
);
$sHtmlHead = '<tr>';
$arrHtmlBodies = array();
$nSize = sizeOf($info);
for($i=0;$i<$nSize;$i++){
$sHtmlHead .= '<th>Person '.$i.'</th>';
$arrTemp = $info[$i];
$j = 0;
foreach($arrTemp as $data){
if(!isset($arrHtmlBodies[$j])) $arrHtmlBodies[$j] = '<tr>';
$arrHtmlBodies[$j] .= '<td>'.$data.'</td>';
if($i==($nSize-1)) $arrHtmlBodies[$j] .= '</tr>';
$j++;
}
}
echo $sHtmlHead; ?></tr>
<?php
echo implode('',$arrHtmlBodies); ?></tr>
</table>
如果您不确定数据是否完整,请尝试使用:
<table>
<?php
$info = array(
array('first_name'=>'Stack','last_name'=>'Overflow'),
array('first_name'=>'Andrew','last_name'=>'Oliveira'),
array('first_name'=>'Eli'),
array('last_name'=>'Astocaza')
);
$sHtmlHead = '<tr>';
$arrHtmlBodies = array();
$nSize = sizeOf($info);
$arrKeys = array_keys($info['0']);
$nSizeKeys = sizeOf($arrKeys);
for($i=0;$i<$nSize;$i++){
$sHtmlHead .= '<th>Person '.$i.'</th>';
$arrTemp = $info[$i];
$j = 0;
for($j=0;$j<$nSizeKeys;$j++){
if(!isset($arrHtmlBodies[$j])) $arrHtmlBodies[$j] = '<tr>';
$arrHtmlBodies[$j] .= '<td>'.$info[$i][$arrKeys[$j]].'</td>';
if($i==($nSize-1)) $arrHtmlBodies[$j] .= '</tr>';
}
}
echo $sHtmlHead; ?></tr>
<?php
echo implode('',$arrHtmlBodies); ?></tr>
</table>