我有一个脚本,它从文本文件中收集数据并将其显示在HTML表格中。这是非常简单的编码。但我想要做的是让表格显示按.$parts[1].
列排序的结果。现在,脚本显示按.$parts[0].
列排序的结果。
我试图让它与usort
一起使用,但我放弃了。
这是我的代码:
<table class="heavyTable">
<thead>
<tr>
<th>Name</th>
<th>Date</th>
<th>Length</th>
</tr>
</thead>
<tbody>
<?php
$file_handle = fopen("bardate_domains.txt", "rb");
while (!feof($file_handle) ) {
$line_of_text = fgets($file_handle);
$parts = explode(' ', $line_of_text);
$tmp = explode('.', $parts[0]);
echo "<tr><td>".$parts[0]."</td><td>".$parts[1]."</td><td>".strlen($tmp[0])."</td></tr>";
}
fclose($file_handle);
?>
</tbody>
</table>
我感谢我能得到的任何帮助:)
编辑: 文本文件如下所示:
0086.se 2017-04-02
0102design.se 2017-03-03
0141.se 2017-04-21
0158.se 2017-03-27
016fotboll.se 2017-03-31
020716.se 2017-04-12
021webb.se 2017-04-23
总共有大约40,000行。
答案 0 :(得分:0)
您可以使用usort功能并提供您自己的排序功能,如下所示:
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
但是你必须首先检索所有数组元素,然后对它们进行排序,然后才能打印出来。
答案 1 :(得分:0)
据我了解,您是逐行创建表,因此输出将是按文本文件行的顺序排序的表,当且仅当文本文件按{{1}排序时这就是表格的排序方式。
我认为一旦创建了html表,就不会有任何(简单)方法对它进行排序,所以你应该在创建表之前对数据进行排序。
答案 2 :(得分:0)
<?php
$fileHandler = fopen("bardate_domains.txt", "rb");
$data = [];
while (!feof($fileHandler) ) {
// read file row
$row = fgets($fileHandler);
$index = count($data);
// explode array by space
$data[$index] = explode(' ', $row);
// explode data[$index][0] by '.', then insert into array in index 0 & 1
array_splice($data[$index], 0, 1, explode('.', $data[$index][0]));
}
// sort array by array index 1
usort($data, function ($prev, $next) {
if ($prev[1] == $next[1]) {
return 0;
}
return ($prev[1] < $next[1]) ? -1 : 1;
});
fclose($fileHandler);
?>
<table class="heavyTable">
<thead>
<tr>
<th>Name</th>
<th>Date</th>
<th>Length</th>
</tr>
</thead>
<tbody>
<?php foreach ($data as $item): ?>
<tr>
<td><?= $item[0] . '.' . $item[1] ?></td>
<td><?= $item[2] ?></td>
<td><?= $item[1] ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>