在PHP中使用关联数组创建多个html表

时间:2016-03-17 05:12:43

标签: php html foreach associative-array

我有一个数组数组并且访问数据很好,但是当我尝试基于一个键创建单独的表时,该键被设置为从数据库中提取的数据所在的数字月份。

I have: 
array(1) {
  [5]=>
  array(12) {
    ["ID"]=>
    string(5) "1001"
    ["created_timestamp"]=>
    string(26) "2015-06-11 19:10:00"
    ["firstname"]=>
    string(4) "John"
    ["lastname"]=>
    string(3) "Doe"
  }
}
array(1) {
  [5]=>
  array(12) {
    ["ID"]=>
    string(5) "1002"
    ["created_timestamp"]=>
    string(26) "2015-06-12 19:10:00"
    ["firstname"]=>
    string(4) "Jane"
    ["lastname"]=>
    string(3) "Doe"
  }
}
array(1) {
  [6]=>
  array(12) {
    ["ID"]=>
    string(5) "1003"
    ["created_timestamp"]=>
    string(26) "2015-07-16 19:20:00"
    ["firstname"]=>
    string(4) "John"
    ["lastname"]=>
    string(4) "John"
  }
}

[5]表示当前月份-1。我想要做的是创建一个表和标题,但只创建一次,然后使用名和姓填充表。

foreach($m as $key => $value)
            {
                if(key($m) != $currentKey)
                {
                    $currentKey = key($m);
                }
                if($key == date("n", strtotime($value['created_timestamp']))-1);
                {
                    for($i=$currentKey; $i<=$lastkey; $i++) {
                        echo "<br>".count($key);
                        $table .= '<table id=' . date("F-Y", strtotime($m[$currentKey]['created_timestamp'])) . ' class="tblclass">
                        <thead><tr><th>Month</th><th>ID</th><th>Customer</th></tr></thead>';
                        $table .= '<tbody>';
                        $table .= '<tr><td>'.date("F Y", strtotime($m[$currentKey]['created_timestamp'])).'</td><td>' . $value['ID'] . '</td><td>' . $value['lastname'] . ' ' . $value['firstname'] . '</td></tr>';

                        $table .= '</tbody>';
                        $table .= '</table>';
                    }
                }
            }

每当我运行代码时,它会为每个单独的数组创建一个表。我想为每个单独的月份创建一个表,并使用相同的键填充任何表。我觉得我错过了一些东西。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

一个肮脏的解决方案。由于缺乏信息 以下是一些假设:
  - 数组按ASC顺序排序
  - 每个数组中只有一个项目[ID,名称,时间戳]
  - 如果有更多项目,那么你可以在那里添加一个循环
  - $ m是多维数组 注意:未经测试。

$currentKey = 0;
$count= 0;
$lastKey = count($m) - 1;

foreach($m as $key => $value) {

    if(key($m) != $currentKey) {
        $currentKey = key($m);

        if($count== 0) {
            echo "<br>".count($key);
            $table .= '<table id=' . date("F-Y", strtotime($m[$currentKey]['created_timestamp'])) . ' class="tblclass">
            <thead><tr><th>Month</th><th>ID</th><th>Customer</th></tr></thead>';
            $table .= '<tbody>';
        } else {            
            $table .= '</tbody>';
            $table .= '</table>';
            $table .= '<table id=' . date("F-Y", strtotime($m[$currentKey]['created_timestamp'])) . ' class="tblclass">
            <thead><tr><th>Month</th><th>ID</th><th>Customer</th></tr></thead>';
            $table .= '<tbody>';
        }
    }

    if($key == date("n", strtotime($value['created_timestamp']))-1) {
        $table .= '<tr><td>'.date("F Y", strtotime($value['created_timestamp'])).'</td><td>' . $value['ID'] . '</td><td>' . $value['lastname'] . ' ' . $value['firstname'] . '</td></tr>';
    }

    if($lastKey == $count) {
        $table .= '</tbody>';
        $table .= '</table>';
    }

    $count++;
}