如何计算数组中具有相同名称的数字键
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
中的项目有换行符。这意味着 club
与 club\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);
对于平面文件博客系统,我在目录 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
中的项目有换行符。这意味着 club
与 club\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);