【问题标题】:PHP: Counting the number of occurrences of each word in an associative array of StringsPHP:计算字符串关联数组中每个单词的出现次数
【发布时间】:2017-09-04 23:45:20
【问题描述】:

设数组为

{
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.net/manual/en/function.array-count-values.php 来计算唯一性...或者您可以迭代并在空格上爆炸..
  • 请展示你到目前为止所做的尝试
  • $result=mysqli_query($connection,$query4); $json = mysqli_fetch_all ($result, MYSQLI_ASSOC); echo json_encode($json);

标签: php mysql arrays string search


【解决方案1】:

PHP code demo

<?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
)

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
  • @Rizier 添加解释
【解决方案2】:

重复调用explode()array_merge() 效率低下。只需让implode()将数据压缩成字符串,减少大小写,转换回一维数组,然后计数。很简单。

代码:(Demo)

$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,
)

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 2015-09-14
    • 2013-02-01
    • 2011-02-07
    相关资源
    最近更新 更多