【问题标题】:Html table printing from array从数组打印 Html 表格
【发布时间】:2021-01-24 10:52:12
【问题描述】:

我有一个这种格式的 csv。我正在尝试构建一个如下所示的 html 表。

  Sem 1 , Subj 1 , 75 , 100 ;
  Sem 1 , Subj 2 , 95 , 100 ;
  Sem 1 , Subj 3 , 88 , 100 ;
  Sem 2 , Subj 2 , 95 , 100 ;
  Sem 2 , Subj 3 , 85 , 100 ;
  Sem 3 , Subj 4 , 87 , 100 ;
  Sem 4 , Subj 1 , 84 , 100 ;
   

HTML 表格

      Sem 1  Sem 2  Sem 3  Sem 4
Subj 1   75      X     X     84
Subj 2   95     95     X     X 
Subj 3   88     85     X     X 
Subj 4   X      X      87    X 

// 这就是我想出的。当前只打印标题

$datas = [
["Sem 1" , "Subj 1" , "75" , "100"],
["Sem 1" , "Subj 2" , "95" , "100"],
["Sem 1" , "Subj 3" , "88" , "100"],
["Sem 2" , "Subj 2" , "95" , "100"],
["Sem 2" , "Subj 3" , "85" , "100"],
["Sem 3" , "Subj 4" , "87" , "100"],
["Sem 4" , "Subj 1" , "84" , "100"]];


  
$unique_coloum = [];
echo "<tr>";
foreach($datas as $data){
    if(!in_array($data[0],$unique_coloum)){
        echo "<td>".$data[0]."</td>";
        array_push($unique_coloum,$data[0]);
    }       
}
echo "</tr>";   
foreach($datas as $data){
   #?
}
    

Sem 和 Subj 是 n。我被困在关于如何开始的 for 循环逻辑上。任何帮助都会很棒。

【问题讨论】:

  • 因为这个问题显然是关于 php - why 你标记了 C# 吗?
  • 重组您的数组,使其按主题组织(主题为键,为每个学期保存数据的另一个数组赋值),因为主题呈现行,学期呈现单元格。之后输出应该是微不足道的。
  • 请看下一个解决方案:phpize.online/…
  • @SlavaRozhnev 如果你有解决方案,那么请在 stackoverflow 上写一个答案——这就是这个网站应该如何工作的......

标签: php logic


【解决方案1】:

您可以使用下一个解决方案:

<?php
$datas = [
    ["Sem 1" , "Subj 1" , "75" , "100"],
    ["Sem 1" , "Subj 2" , "95" , "100"],
    ["Sem 1" , "Subj 3" , "88" , "100"],
    ["Sem 2" , "Subj 2" , "95" , "100"],
    ["Sem 2" , "Subj 3" , "85" , "100"],
    ["Sem 3" , "Subj 4" , "87" , "100"],
    ["Sem 4" , "Subj 1" , "84" , "100"]
];

$columns = array_column($datas, 0, 0);

sort($columns);
// var_export($columns);

$res = array_reduce(
    $datas,
    function($res, $data) {
        if (!isset($res[$data[1]])) $res[$data[1]] = [];
        $res[$data[1]][$data[0]] = $data[2];
        return $res;
    },
    $res
);

// var_export($res);

$output = "<tr><th>subject</th>" . implode('</th><th>', $columns) . '</th></tr>' . PHP_EOL;

foreach($res as $key => $row) {
    $output .= "<tr><td>$key</td>";
    foreach($columns as $col) {
        $output .= $row[$col] ? "<td>$row[$col]</td>" : "<td>X</td>";
    }
    $output .= "</tr>" . PHP_EOL;
}

echo $output;

share PHP code

【讨论】:

    猜你喜欢
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多