【问题标题】:Foreach Counting how many times 1 items comes in array [closed]Foreach 计数 1 项在数组中出现的次数[关闭]
【发布时间】:2012-12-05 00:13:03
【问题描述】:

我正在尝试在 foreach 中计数

像这样 在数组中 项目 1 项目 1 第 2 项 第 3 项 第 3 项 第 3 项 第 3 项

现在这些物品来自爆炸

 $likes = explode(',', $user_likes);

那我有

foreach($likes as $like){

  echo $like.'<br>';

}

我想要的输出是

项目 1 (2) 第 2 (1) 项 项目 3 (4)

所以没有双重项目,但该项目在数组中的次数

【问题讨论】:

    标签: php loops foreach explode


    【解决方案1】:

    这...

    <?php
    
    // Counter
    $i = '0';
    
    // Array
    $array = 'apple, grape, pair, plum';
    $array = explode(",", $array);
    
    // Loop
    foreach ($array as $value)
      {
          $i++;
          echo '<p>#' . $i . ' - ' . $value . '</p>';
      }
    
    ?>
    

    会输出这样的东西...

    #1 - apple
    
    #2 - grape
    
    #3 - pair
    
    #4 - plum
    

    【讨论】:

      【解决方案2】:

      print_r(array_count_values($likes));
      

      如果您希望将其格式化为 item 1 (2) item 2 (1) 等,请执行以下操作:

      $valueCount = array_count_values($likes);
      foreach ($valueCount as $key => $value) {
          echo $key." (".$value.") ";
      }
      

      【讨论】:

      • 谢谢,这是我一直在寻找的,但您能帮我将最高数字排序到最低数字吗?
      • php.net/manual/en/function.arsort.php。设置 $valueCount = arsort(array_count_values($likes));
      • 这似乎不起作用警告:为 foreach() i 提供的参数无效
      • $count = array_count_values($likes); arsort($count);这工作感谢您的帮助
      【解决方案3】:

      试试这样的:

      $scores = array();
      
      foreach($likes as $like){
          if(!isset($scores[$like]))
          {
              $scores[$like] = 1;
          }
          else
          {
              $scores[$like]++;
          }
      }
      
      print_r($scores);
      

      【讨论】:

        猜你喜欢
        • 2022-01-14
        • 2017-12-08
        • 2014-07-25
        • 1970-01-01
        • 1970-01-01
        • 2014-03-18
        • 1970-01-01
        • 2018-06-27
        • 1970-01-01
        相关资源
        最近更新 更多