[英]PHP: Counting the number of occurrences of each word in an associative array of Strings
让数组为
{
element [0] = 'Mary',
element [1] = 'Mary had a little',
element [2] = 'a lamb',
element [3] = 'Mary mary mary',
.
.
element [n] = 'lady'
}
输出:
Mary : 5
a : 2
had : 1
little : 1
lady : 1
<?php
$array=array(
0 => 'Mary',
1 => 'Mary had a little',
2 => 'a lamb',
3 => 'Mary mary mary',
4 => 'lady'
);
$data=array();
foreach($array as $sentence)
{
//gatering words in an array by spliting the sentence on space.
$data= array_merge($data,explode(" ", $sentence));
}
//counting values present in array for case sensitive
$result=array_count_values($data);
print_r($result); //Result 1
//counting values present in array for case insensitive by changing each array element to lowercase
$result=array_count_values(array_map("strtolower", $data));
print_r($result); //Result 2
输出:
//result 1
Array
(
[Mary] => 3
[had] => 1
[a] => 2
[little] => 1
[lamb] => 1
[mary] => 2
[lady] => 1
)
//result 2
Array
(
[mary] => 5
[had] => 1
[a] => 2
[little] => 1
[lamb] => 1
[lady] => 1
)
进行explode()
和array_merge()
迭代调用效率不高。 只需让implode()
将数据压缩为字符串,减少大小写,转换回一维数组,然后计数即可。 简单。
代码:( 演示 )
$array = [
'Mary',
'Mary had a little',
'a lamb',
'Mary mary mary',
'lady'
];
var_export(
array_count_values(
explode(' ',
strtolower(
implode(' ', $array)
)
)
)
);
输出:
array (
'mary' => 5,
'had' => 1,
'a' => 2,
'little' => 1,
'lamb' => 1,
'lady' => 1,
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.