php - PHP代码根据列值分隔表
问题描述
我有一个 csv 文件,应该根据列值将其转换为 HTML 表,并且我必须根据 csv 的第一列将值放入单独的表中。我认为问题是因为第一列中的 '\n' 。
所以它是这样的:
在Result
列中,在一行中,我使用逗号 (W,M,P) 分隔了三个值。在我编写的代码中,它被视为单独的表头。谁能帮我解决这个问题?
这是我的代码:
<?php
$csv="FinalResult.csv" ;
$csvcontents=file_get_contents($csv);
$csv_array = explode("\n", $csvcontents);
$tables = [];
foreach($csv_array as $key => $value) {
if ($key == 0) {
continue;
}
$line = explode(',', $value);
if (array_key_exists($line[0], $tables)) {
$tables[$line[0]][] = $line;
} else {
$tables[$line[0]] = [$line];
}
}
foreach ($tables as $key => $value) {
echo '<h1> ' .$key. ' </h1>'; // YOUR TITLE (Team)
echo "<table>";
echo '<tr>';
foreach (explode(',', $csv_array[0]) as $keyHeader => $valueHeader) {
if (in_array($keyHeader, [0, 1])) {
continue;
}
echo "<th>$valueHeader</th>";
}
echo '</tr>';
foreach ($value as $keyRow => $valueRow) {
echo '<tr>';
foreach ($valueRow as $keyValue => $valueValue) {
if (in_array($keyValue, [0, 1])) {
continue;
}
echo "<td>$valueValue</td>";
}
echo '</tr>';
}
echo '</table>';
}
?>
我在堆栈溢出中进行了引用,但他们只为一列提供了单个值,而不提供多个值。
所以它将'-'之后的结果列的值作为新标题,我试过但无法解决这个问题,任何人都可以在这件事上真正帮助我。
这是我的输出应该是这样的:
我用黄色标记了所有数据都在同一列中
这是我的 csv 文件:
Team,Date,Opponent,Result
MIN,May-03,UTA,a.b.c=d-e.f-g.h=log4j2-i.xml-j -k -a4j.k=tp_r-RR.xml -
MIN,May-04,SEA,"L,Q,J"
SAC,May-03,DAL,L
SAC,May-04,TOR,W
NYN,May-05,BAL,L
NYN,May-07,MIA,W
解决方案
这是代码
<table>
<?php
$csvValues= array_map('str_getcsv', file('FinalResult.csv'));
$counter = 0;
// Header
echo "<tr>";
foreach($csvValues[0] as $headers){
echo "<th>".$headers."</th>";
}
echo "</tr>";
// Content
foreach($csvValues as $values){
echo "<tr>";
if($counter >0){
foreach($values as $data){
echo "<td>".$data."</td>";
}
}
echo "</tr>";
$counter++;
}
?>
</table>
推荐阅读
- php - Laravel Nova 加载时间优化
- sql - 任何人都可以帮助我导出功能依赖关系和规范化表吗?
- vue.js - 带有嵌套对象数组的Vue JS Vuelidate验证问题
- aws-step-functions - 如何使用 Choice 来测试输入数组是否包含给定的过滤器?
- bootstrap-4 - 即使 cols 加起来为 12,Bootstrap 图像也不会排列
- java - 春季启动,GET API不重新启动微服务不返回新的POST条目
- javascript - 仅当存在某个变量时才使用 useEffect 依赖项,然后仅将其视为依赖项
- r - str_detect 缺少一些样本
- c++ - Visual Studio C++ 资源文件在更改对话框后被更改
- python - ConnectionAbortedError: [WinError 10053] 已建立的连接被 Django 和 Paho mqtt 主机中的软件中止