PHP two dimensional array into HTML

后端 未结 3 616
逝去的感伤
逝去的感伤 2020-12-15 01:36

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

相关标签:
3条回答
  • 2020-12-15 02:14

    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  |
    +-----+-----+-----+
    
    0 讨论(0)
  • 2020-12-15 02:26

    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.

    0 讨论(0)
  • 2020-12-15 02:36

    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:

    enter image description here

    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:

    enter image description here

    0 讨论(0)
提交回复
热议问题