2011-11-23 117 views
-2

异常表假设你有这样的一个数组:PHP:从阵列

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

是的,其实很容易,但用这个方法:

<?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> 
+1

此代码片段将输出相同的OP,它有什么帮助? –

+0

啊,我看到你修改的问题,挂在我会refix我的代码 –

+0

基本上我的代码是JercSi的另一个变化,从而用你最喜欢的一个:) –

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>"; 

你走了!只需一个循环! :)

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