Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Sorting_Ranking_Array Merge - Fatal编程技术网

PHP数组未合并

PHP数组未合并,php,arrays,sorting,ranking,array-merge,Php,Arrays,Sorting,Ranking,Array Merge,我有一段代码,可以从文本文件中执行单词排序。它打开文件并输出一个数组,该数组显示文件中每个单词出现的次数。这一部分工作得很好,但在第二部分,代码将检查给定文件夹中的每个其他文本文件,并输出所有文件中每个单词的总显示次数。问题是输出数组不是合并的总数。有重复。例如,我- the -- 2 quick -- 1 brown -- 1 fox -- 1 jumped -- 1 over -- 1 lazy -- 1 dog -- 1 dog -- 2 a -- 2 lazy -- 1 fox -- 1

我有一段代码,可以从文本文件中执行单词排序。它打开文件并输出一个数组,该数组显示文件中每个单词出现的次数。这一部分工作得很好,但在第二部分,代码将检查给定文件夹中的每个其他文本文件,并输出所有文件中每个单词的总显示次数。问题是输出数组不是合并的总数。有重复。例如,我-

the -- 2
quick -- 1
brown -- 1
fox -- 1
jumped -- 1
over -- 1
lazy -- 1
dog -- 1
dog -- 2
a -- 2
lazy -- 1
fox -- 1
cannot -- 1
catch -- 1
fast -- 1
the -- 1
may -- 1
be -- 1
而不是-

the -- 3
dog -- 3
fox -- 2
lazy -- 2
a -- 2
quick -- 1
brown -- 1
jumped -- 1
over -- 1
very -- 1
cannot -- 1
catch -- 1
fast -- 1
may -- 1
be -- 1
这是全部代码-

<?php
echo "<h3>Word Rank From One File</h3>";
$counted = strtolower(file_get_contents("docs/one.txt"));
$wordArray = preg_split('/[^a-z]/', $counted, -1, PREG_SPLIT_NO_EMPTY);
$wordFrequencyArray = array_count_values($wordArray);

/* Sort array from higher to lower, keeping keys */
arsort($wordFrequencyArray);

/* grab Top 10, huh sorted? */
$top10words = array_slice($wordFrequencyArray,0,10);

/* display them */
foreach ($top10words as $topWord => $frequency)
    echo "$topWord --  $frequency<br/>";

echo "<h3>Total From All Files</h3>";
$path = realpath('docs');
foreach(glob($path.'/*.*') as $file) {
    $counted = strtolower(file_get_contents($file));
    $wordArray = preg_split('/[^a-z]/', $counted, -1, PREG_SPLIT_NO_EMPTY);
    $wordFrequencyArray = array_count_values($wordArray);
    $combine = array_merge($wordFrequencyArray);
    /* Sort array from higher to lower, keeping keys */
    arsort($wordFrequencyArray);

    /* grab Top 10, huh sorted? */
    $top10words = array_slice($wordFrequencyArray,0,10);

    /* display them */
    foreach ($top10words as $topWord => $frequency)
        echo "$topWord --  $frequency<br/>";
    }

?>

我做错了什么或没有做什么? 这两个示例文本文件具有:

那只敏捷的棕色狐狸跳过了那只懒狗。狐狸跳的那条狗后来跑得很快

懒惰的狐狸抓不到快狗。这条狗可能很快。 我也注意到有些词被跳过了


您必须聚合文件中的所有单词,然后计算其频率

$wordArrayTotal = [];
foreach (glob($path.'/*.*') as $file) {
    $counted = strtolower(file_get_contents($file));
    $wordArray = preg_split('/[^a-z]/', $counted, -1, PREG_SPLIT_NO_EMPTY);
    $wordArrayTotal = array_merge($wordArrayTotal, $wordArray);
}

$wordFrequencyArray = array_count_values($wordArrayTotal);

/* Sort array from higher to lower, keeping keys */
arsort($wordFrequencyArray);

/* grab Top 10, huh sorted? */
$top10words = array_slice($wordFrequencyArray, 0, 10);

/* display them */
foreach ($top10words as $topWord => $frequency) {
    echo "$topWord --  $frequency<br/>";
}
$wordArrayTotal=[];
foreach(全局($path./*.*)作为$file){
$counted=strtolower(文件获取内容($file));
$wordArray=preg_split('/[^a-z]/',$counted,-1,preg_split_NO_EMPTY);
$wordArrayTotal=array\u merge($wordArrayTotal,$wordArray);
}
$wordFrequencyArray=数组\计数\值($wordArrayTotal);
/*将数组从高到低排序,保留键*/
arsort($wordFrequencyArray);
/*抓住前10名,是吗*/
$top10words=array\u片($wordFrequencyArray,0,10);
/*展示它们*/
foreach($top10words为$topWord=>$frequency){
回声“$topWord--$frequency
”; }
array\u merge接受一个或多个数组进行合并,您使用$combine=array\u merge($wordFrequencyArray)做什么?我正在尝试合并已读取文本文件中的输出数组。类似于合并one.txt和two.txt的输出。所以我假设$wordFrequencyArray包含两个不同的输出。