Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP计算文件中最常出现的行?_Php_Arrays_File_List_Count - Fatal编程技术网

使用PHP计算文件中最常出现的行?

使用PHP计算文件中最常出现的行?,php,arrays,file,list,count,Php,Arrays,File,List,Count,我有一个PHP脚本,它在文件末尾附加一个字符串。然后我希望能够读取该文件,找出每行出现的次数,然后计算最常出现的行和它们的数字。例如,如果我有: williamtdr chicken chicken williamtdr williamtdr pig 我会得到: williamtdr, 3 chicken, 2 pig, 1 在PHP中有什么方法可以做到这一点吗 谢谢 //$data = file_get_contents('yourfile.txt'); // get file conte

我有一个PHP脚本,它在文件末尾附加一个字符串。然后我希望能够读取该文件,找出每行出现的次数,然后计算最常出现的行和它们的数字。例如,如果我有:

williamtdr
chicken
chicken
williamtdr
williamtdr
pig
我会得到:

williamtdr, 3
chicken, 2
pig, 1
在PHP中有什么方法可以做到这一点吗

谢谢

//$data = file_get_contents('yourfile.txt'); // get file contents
$data = 'williamtdr
chicken
chicken
williamtdr
williamtdr
pig';

$data = explode("\n", $data); // split data at each newline
$data = array_count_values($data); // count occurrences of each line

print_r($data);
将输出:

Array
(
    [williamtdr] => 3
    [chicken] => 2
    [pig] => 1
)
[]
如果您想要与您的问题相同的输出,您可以这样循环:

foreach ($data as $word => $count)
{
    echo $word . ', ' . $count . "\n";
}

或者,最好是这样做:

$data = file('yourfile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$data = array_count_values($data);
将输出:

Array
(
    [williamtdr] => 3
    [chicken] => 2
    [pig] => 1
)
[]
如果您想要与您的问题相同的输出,您可以这样循环:

foreach ($data as $word => $count)
{
    echo $word . ', ' . $count . "\n";
}

或者,最好是这样做:

$data = file('yourfile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$data = array_count_values($data);

在现实生活中你会怎么做

您将打开文件,然后开始计数:

$file   = file('file.txt');
$counts = array();
foreach ($file as $line) {
    $line = trim($line);
    if ( ! isset($counts[$line]) {
        $counts[$line] = 1;
    } else {
        $counts[$line]++;
    }
}
var_dump($counts);

在现实生活中你会怎么做

您将打开文件,然后开始计数:

$file   = file('file.txt');
$counts = array();
foreach ($file as $line) {
    $line = trim($line);
    if ( ! isset($counts[$line]) {
        $counts[$line] = 1;
    } else {
        $counts[$line]++;
    }
}
var_dump($counts);

你试过什么吗?
str\u word\u count()
可以是一个好的开始,结合
array\u count\u values()
可能。你试过什么吗?
str\u word\u count()
可以是一个好的开始,结合
array\u count\u values()
可能。