A simple Google search will reveal a multitude of solutions for converting a two dimension array into HTML using PHP. Unfortunately none of these has the answers I am lookin
You'll need two loops. One to loop through the first level, and another to go through the second level. This assumes that your two dimensional array is regularly rectangular.
//our example array
$foo['one']['a'] = '1a';
$foo['one']['b'] = '1b';
$foo['two']['a'] = '2a';
$foo['two']['b'] = '1b';
//open table
echo '<table>';
//our control variable
$first = true;
foreach($foo as $key1 => $val1) {
//if first time through, we need a header row
if($first){
echo '<tr><th></th>';
foreach($val1 as $key2 => $value2){
echo '<th>'.$key2.'</th>';
}
echo '</tr>';
//set control to false
$first = false;
}
//echo out each object in the table
echo '<tr><td>'.$key1.'</td>';
foreach($val1 as $key2 => $value2){
echo '<td>'.$value2.'</td>';
}
echo '</tr>';
}
echo '</table>';
Haven't tested it, but that should do it for you. First level of the array is rows, second level of the array is columns.
Sample Output for our $foo array:
+-----+-----+-----+
| | a | b |
+-----+-----+-----+
| one | 1a | 1b |
+-----+-----+-----+
| two | 2a | 2b |
+-----+-----+-----+
Your loops will be something like this:
foreach($myArray as $k => $v)
In $k you'll kave the key, in $v the value... Then you can print both.
The following code will look through the two dimensions of the array and make them into a table. Regardless of what the key
may be, you will get a visual representation of it. If they do have key name and not just an index, the values will be available in $key
and $subkey
respectively. So you have them if you need them.
The code:
$myarray = array("key1"=>array(1,2,3,4),
"key2"=>array(2,3,4,5),
"key3"=>array(3,4,5,6),
"key4"=>array(4,5,6,7)); //Having a key or not doesn't break it
$out = "";
$out .= "<table>";
foreach($myarray as $key => $element){
$out .= "<tr>";
foreach($element as $subkey => $subelement){
$out .= "<td>$subelement</td>";
}
$out .= "</tr>";
}
$out .= "</table>";
echo $out;
The result:
If you want to see the keys as headings, you could add this code after the echo "<table>";
line:
echo "<tr>";
foreach($myarray as $key => $element) echo "<td>$key</td>";
echo "</tr>";
Resulting in this: