PHP:来自数组的异常表
假设您有这样一个数组:PHP:来自数组的异常表,php,arrays,Php,Arrays,假设您有这样一个数组: 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&
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>
<? } ?>
等等。。。但是,如果给定相同的数组,您将如何处理这样的表:
person 0 || person 1
========================
Stack-----|| Andrew
========================
Overflow|| Oliveira
========================
是的,事实上非常简单,但使用以下方法:
<?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>
名字
姓
制作两个数组,一个用于名字,另一个用于姓氏。然后,使用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>";
foreach($i=>$data的数组){
$headers.=“个人$i”;
$first_name.=''.$data[“first_name]”;
$last_name.=''.$data[“first_name”];
}
回声“
$headers
$first_name
$姓氏
";
好了!只有一个循环!:) 像这样的
<?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>';
?>
关于@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>
如果不确定数据是否完整,请尝试:
<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>
此代码片段将输出与OP相同的内容,它有何帮助?啊,我看到你修改了问题,等一下,我将重新填充代码基本上我的代码是JercSi的另一个变体,所以请使用你最喜欢的代码:)@Dany Khalife one信息:永远不要将count或sizeof放入循环中。因为如果将$count放在循环之外,则循环将执行100%以上的时间。真!我遗漏了这一部分,将对其进行修改:)