PHP:如何在阅读之前从左到右对PHP进行排序


PHP : How to sort left to right php before reading

下面的代码正在读取每一行并计算每一个相同的外观。然而,在我将其保存为文本文件之前,我仍然需要excel从左到右对每行进行排序。现在我想省略excel步骤。我查看了php手册,看到了排序和分解函数。我插入了这些命令,但不起作用。有人能帮我指对方向吗?

原始数据为:

hero2,hero1,hero3
hero2,hero3,hero4
hero1,hero2,hero3

excel:后的文本文件数据库

hero1,hero2,hero3
hero2,hero3,hero4
hero1,hero2,hero3

输出:

appeared 2x: hero1,hero2,hero3
apprered 1x: hero2,hero3,hero4

代码:

<?php
$data = file("heroes.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$lines = explode(",", $data);
$sort ($lines);
$result = array_count_values($lines);
foreach($result as $v => $amount)
    echo "Appeared " . $amount . "x: " . $v . "<br />";
?>

在阅读了回答者的建议和示例后,我现在想出了这个代码。

 <?php
 $data = file("heroes.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
 $lines = explode(",", implode($data));
 $sorted_lines = sort($lines); // sorted data
 $result = array_count_values($lines);
 // output the sorted data
 foreach($result  as $v => $amount) {
 echo "Appeared " . $amount . "x: " . $v . "'n";
 }
 ?>

然而,输出变成了这样的

输出:

appeared 3x: hero2
appeared 3x: hero3
appeared 2x: hero1
appeared 1x: hero4

正确的输出应该像这个

output :
appeared 2x: hero1,hero2,hero3
apprered 1x: hero2,hero3,hero4

我认为您的问题是使用带有空格的爆炸,并且应该使用带有逗号的爆炸。explode(",",$data);

我想,在你尝试计数之前,你也需要将数据转换回字符串,否则我认为你不会得到预期的结果。

例如。。。

$sortedString = implode(",", $theArray);

在进行排序之前,您正在对旧数据进行循环。并且您没有使用PHP函数sort,而是将其作为一种变量(删除之前的$)。

<?php
$data = file("heroes.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$lines = explode(",", $data);
$sorted_lines = sort($lines); // sorted data
$result = array_count_values($sorted_lines);
// output the sorted data
foreach($result  as $v => $amount) {
    echo "Appeared " . $amount . "x: " . $v . "<br />";
}
?>