下面的代码正在读取每一行并计算每一个相同的外观。然而,在我将其保存为文本文件之前,我仍然需要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 />";
}
?>