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

时间:2016-04-18 02:22:13

标签: php

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

原始数据是:

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

excel后的文本文件db:

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

2 个答案:

答案 0 :(得分:0)

我相信你的问题是你正在使用具有空格的爆炸,你应该使用逗号。 explode(",",$data);

我想你也想在你尝试计算它们之前把你的数据变成一个字符串,或者我认为你不会得到你期望的结果。

例如......

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

答案 1 :(得分:0)

在进行排序之前,您正在循环旧数据。而且你没有使用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 />";
}

?>