以下代码用于读取每行并计算每个相同的外观。但是,在我将其保存为文本文件分隔之前,我仍然需要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
答案 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 />";
}
?>