【问题标题】:Sort text file in table alphabetically按字母顺序对表格中的文本文件进行排序
【发布时间】:2016-10-30 17:22:11
【问题描述】:

我在对文本文件进行排序和按第一个字母对每一行进行分类时遇到问题。这就是我所在的位置。

list.txt

Apple
Orange
Apricot
Banana
Lemon

categorize.php

<?php
$fname = file("list.txt");
sort($fname);
for($i=0; $i<count($fname); $i++)
{
$states = explode(",", $fname[$i]);
?><table>
<th>A</th><th>B</th><th>L</th><th>O</th>
<tr><td><?php echo [A],$states[0];?></td>
<td><?php echo [B],$states[0];?></td>
<td><?php echo [L],$states[0];?></td>
<td><?php echo [O],$states[0];?></td></tr>
</table>
<?php
}
?>

categorize.php 输出

A B L O
Apple Apple Apple Apple
A B L O
Apricot Apricot Apricot Apricot
A B L O
Banana Banana Banana Banana
A B L O
Lemon Lemon Lemon Lemon
A B L O
Orange Orange Orange Orange 

期望的输出

   A     B      L     O
 Apple Banana Lemon Orange
Apricot

所以我明白为什么它当前输出两倍于原始文本文件,因为我重复了两次,但我不知道我怎么能告诉它我只想要在 A 下以 A 开头的行和在 B 下以 B 开头的行等。

【问题讨论】:

  • 等等,现在我什至不确定表格是否正确。嗯..
  • 是的,这张桌子完全错了。
  • 你应该这样做&lt;th&gt;&lt;td&gt;A&lt;/td&gt;&lt;td&gt;B&lt;/td&gt;&lt;td&gt;L&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;/th&gt;
  • 注意,在行中使用与标题中相同数量的字段。您的行仅包含一个字段,而您的标题包含四个。
  • 先爆炸再使用排序......

标签: php sorting html-table alphabetical-sort


【解决方案1】:

你可以试试:

$fname = file("list.txt");
sort($fname);

$category = array();
foreach($fname as $var) {
    $category[strtoupper(substr($var, 0, 1))][] = $var;
}

printf("<table>");
printf("<th>");
foreach(array_keys($category) as $v) {
    printf("<td>%s</td>", $v);
}
printf("</th>");

array_unshift($category, null);

foreach(call_user_func_array("array_map", $category) as $v) {
    printf("<tr>");
    foreach($v as $d) {
        printf("<td>%s</td>", $d);
    }
    printf("</tr>");
}
printf("</table>");

HTML 输出

<table>
    <th>
    <td>A</td>
    <td>B</td>
    <td>L</td>
    <td>O</td>
    </th>
    <tr>
        <td>Apple</td>
        <td>Banana</td>
        <td>Lemon</td>
        <td>Orange</td>
    </tr>
    <tr>
        <td>Apricot</td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>

【讨论】:

  • 我不知道你为什么投了反对票,因为它似乎几乎可以工作了。它只是显示有点奇怪,但 html 似乎几乎是正确的。我会玩一玩,让你知道。谢谢!
  • it appears to be almost working 是什么意思?好吧,您的代码是硬编码的,例如echo [A],$states[0];,这不是我的风格,我让系统自动确定位置和索引
  • 它几乎工作的原因是&lt;th&gt; 没有正确显示(不知道为什么,可能是复制/粘贴错误)。无论哪种方式,它都可以完美运行!现在只是为了了解printf 以及如何正确使用我的语法。唔。谢谢爸爸!
  • 我遇到了一个新问题.. 我需要从 printf("&lt;td&gt;%s&lt;/td&gt;", $d); 内部获取一些 $variables,但我不知道如何操作,似乎没有语法可以工作,例如.. @987654328 @
  • 没关系。我只是看错了。再次感谢您的帮助爸爸!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多