如何计算数组中具有相同名称的数字键

How to count number keys in array which have the same name

对于平面文件博客系统,我在目录 data/articles 中有一些 txt 文件。 txt 文件如下所示:

id_20200430223049                    // id
Friends                              // category
uploads/mainimage_5eab357970b0d.jpeg // image
Officials wanted                     // title
comment<br />comment<br />comment    // comment

如何计算所有 txt 文件的每个类别的类别数?

所以可以说:我有 6 个文本文件。在每个文件的第 2 行:

其中 2 个属于 俱乐部

其中 2 人的类别是 同事

1 人的类别是 家庭

并且 1 有类别 朋友

我目前拥有的:

$files = glob("data/articles/*.txt"); // Specify the file directory by extension (.txt)
$cat_lines = array();
foreach($files as $file) {

        $lines = file($file); // all lines of file in array
        $cat_lines[] = strtolower($lines[1]); // grab the category lines and put in array

}

print_r($cat_lines); 给我这个输出:

Array ( [0] => friends [1] => family [2] => club [3] => colleagues [4] => club [5] => colleagues )

计算我使用的数组中键的数量:

echo count (array_keys( $cat_lines, strtolower("Club") ) );

不幸的是,它给了我 0 作为输出而不是 2!!!我不明白这个...

但除此之外,我最终想要实现的目标是:我如何创建一个 foreach 循环来给我这样的输出:

Friends (1)
Family (1)
Club (2)
Colleagues (2)

可能您在 $lines 中的项目有换行符。这意味着 clubclub\n 不同。

当您明确使用 file() 或 trim 值时使用 FILE_IGNORE_NEW_LINES

$lines = file($file, FILE_IGNORE_NEW_LINES); // all lines of file in array WITHOUT linebreaks

关于你的第二个问题 - array_count_values 会给你一个新数组,其中包含每个元素的计数:

$counts = array_count_values($cat_lines);