2011-04-05 50 views
0

我:映射数组并显示它?

$l = array(
       array("A"=>0.1,"B"=>1,"C"=>1,"D"=>1), 
       array("A"=>0.1,"B"=>1,"C"=>0,"D"=>2), 
      ); 

$h = array('h1','h2'); 

1 - 我该怎么map(l,h)这样做呢?

$result= $array(
       'h1'=> array("A"=>0.1,"B"=>1,"C"=>1,"D"=>1), 
       'h1'=> array("A"=>0.1,"B"=>1,"C"=>0,"D"=>2), 
      ); 

2 - 所以我我可以显示(本HTML表格)

------------------- 
    | A | B | C | D 
------------------- 
h1 | 
------------------- 
h2 | 
-------------------- 

我试图输出:

<table> 
<tr><td>A</td><td>B</td><td>C</td><td>D</td></tr> 
foreach($result as $key=>$value){ 
    <tr> 

    <tr> 
} 
<table> 

任何人都可以帮我吗?

回答

6

映射数组,你的建议是简单的:

$mapped = array_combine($h, $l); 

然后:

// Print the top "headers" row 
$columns = array_keys(reset($l)); 
echo '<table><tr><td>&nbsp;</td>'; 
foreach ($columns as $column) { 
    echo '<td>'.$column.'</td>'; 
} 
echo '</tr>'; 

// Print each data row 
foreach ($mapped as $key => $row) { 
    echo '<tr><td>'.$key.'</td>'; 
    foreach ($row as $cell) { 
     echo '<td>'.$cell.'</td>'; 
    } 
    echo '</tr>'; 
} 

// Done! 
echo '</table>'; 
+0

@Jon非常感谢你,为什么这行array_keys(reset($ l))? – kn3l 2011-04-05 08:39:31

+0

idk如果重置是必要的(可能是任何一种方式都是好的做法),但他正在为'A','B','C','D'列标题做这件事。你不应该硬编码他们,以防你在后来改变阵列 – 2011-04-05 08:52:31

+0

@jon你打开两个开放的'td''而不是''​​''是这个错字还是我错过了什么? – 2011-04-05 08:53:43

0
$result = array_combine($h, $l); 

这工作BC有隐含的数字索引的数组元素,你可以看到,如果你var_dump($h)var_dump($l)

<table> 
<?php 
    echo "<tr>"; 
    echo "<td>&nbsp</td>"; 
    foreach(array_keys($l[0]) as $letter) 
     echo "<td>$letter</td>"; //A,B,C,D 
    echo "</tr>"; 
    foreach($result as $h_key=>$innerArr) 
    { 
     echo "<tr><td>$hkey</td>"; //h1,h2 
     foreach($innerArr as $key=>$val) 
      echo "<td>$val</td>"; //0.1, 1, etc. 
     echo "</tr>"; 
    } 
?> 
</table>