【问题标题】:count same string in an array in php [duplicate]在php的数组中计算相同的字符串[重复]
【发布时间】:2018-04-09 14:21:20
【问题描述】:

我有一个包含相同字符串值的数组,我如何将这些相同的字符串计算为一个数字。

示例数组:

$animals = array('dog','dog','cat','mouse','cat');

输出:

dog x2,
cat x2,
mouse x1

【问题讨论】:

  • 可能不是最优雅或最有效的解决方案,但是如何对数组进行排序,然后对其进行迭代并检查当前元素与前一个元素并在映射中保存计数器?
  • 我不仅想获取重复字符串的数量,还想获取字符串本身,例如。狗 x2
  • @nikko 重复或出现次数?

标签: php


【解决方案1】:

使用array_count_values

$animals = array('dog','dog','cat','mouse','cat');
$count_values = array_count_values($animals);

print_r($count_values );

输出

Array
(
    [dog] => 2
    [cat] => 2
    [mouse] => 1
)

然后像这样迭代它

foreach($occurences as $key => $item){
    echo $key ." x" .$item .",";
    print "\n";
}

【讨论】:

  • @nikko 我已经更新了我的答案,请查看 foreach 循环
【解决方案2】:

你需要像这样使用foreach()array_count_values()

$animals = array('dog','dog','cat','mouse','cat');
$values=array_count_values($animals) ;
foreach ($values as $key=>$value) {
    echo $key ."X". $value;
    echo '<br>';
}

【讨论】:

  • 这正是我要找的,谢谢
  • 很高兴为您提供帮助
【解决方案3】:

这样可以:

// The verbose way
<?php
   $counts = [];
   $animals = array('dog','dog','cat','mouse','cat');

   foreach ($animals as $value) {
       if (key_exists($value, $counts)) {
           $counts[$value] += 1;
       } else {
           $counts[$value] = 1;
       }
   }
?>

...但是 php 有一个方法可以做到这一点

<?php
    $counts = array_count_values($animals);
?>

以后,如果你想打印出现次数

foreach ($counts as $key => $value) {
    echo $key." x".$value."<br />";
}

【讨论】:

    【解决方案4】:
    <?php 
    $array =  array('dog','dog','cat','mouse','cat');
    $vals = array_count_values($array);
    // print_r($vals);
    foreach ($vals as $key=>$value) {
      echo $key ." X". $value;
      echo '<br>';
    }
    ?>
    

    【讨论】:

    • 感谢您的回答,顺便说一句,我不仅想获得重复字符串的数量,还想打印字符串,例如。狗 x2
    • 为您的答案添加一些描述。
    猜你喜欢
    • 1970-01-01
    • 2019-12-02
    • 2020-02-08
    • 1970-01-01
    • 2019-02-17
    • 2017-12-05
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多