【问题标题】:Foreach loop in array, getting occurrence value数组中的foreach循环,获取出现值
【发布时间】:2018-07-15 02:06:45
【问题描述】:

我在一个数组中有一个简单的 foreach 循环

<?php  
$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $value) {
  echo "$value <br>";
}
?>  

我想获取值的出现次数,例如"$value is X occurence &lt;br&gt;",因此文本为:

红色是0次出现

绿色是 1 次出现

....

我该怎么做?

【问题讨论】:

  • 所以你想要每个元素的总数或元素的位置(又名键)?如果你只是想要这个职位foreach($arr as $position =&gt; $value)
  • foreach ($colors as $key=&gt;$value) { echo "$key =&gt; $value &lt;br&gt;"; }
  • 总数,因为我有一个数组,我需要为所有数组分配一个特定的 ID 以进行这样的操作:id="carousel-selector-0id="carousel-selector-1...
  • red is 0 occurence - 这是一个总数吗?

标签: php arrays


【解决方案1】:

使用这个

<?php  
$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $key=>$value) {
  echo $value . " is " . $key . " occurence <br>";
}
?>

【讨论】:

    【解决方案2】:

    当您使用 foreach 时,您可以拥有键和值。在这里,由于您没有指定键,因此键将是数组元素的索引值。要获得这种情况,您需要使用foreach($colors as $index =&gt; $value)

    <?php  
    $colors = array("red", "green", "blue", "yellow");
    
    foreach ($colors as $index => $value) {
      echo "$value is $index occurence <br>";
    } 
    

    【讨论】:

      【解决方案3】:

      没有必要使用奇异的函数来实现这一点。只需将 foreach 循环替换为 for 循环,这样您就可以使用现成的索引器:

      <?php
      
          $colors = array("red", "green", "blue", "yellow");
      
          for ($i = 0; $i < count($colors); ++$i) {
              echo $colors[$i]." is ".$i." occurrence<br>";
          }
      
      ?>
      

      或者,但只是因为您的数组没有定义键,您可以使用以下方法:

      <?php
      
          $colors = array("red", "green", "blue", "yellow");
      
          foreach ($colors as $index=>$value) {
              echo "$value is $index occurrence<br>";
          }
      
      ?>
      

      【讨论】:

        【解决方案4】:

        使用array_count_values 函数得到想要的结果。

        $colors = array("red", "green", "blue", "yellow");
        $counts = array_count_values($colors);
        
        foreach ($counts as $key=>$value) {
          echo $key."=>".$value."<br>"; 
        }
        

        在此处查看文档http://php.net/manual/en/function.array-count-values.php

        【讨论】:

          【解决方案5】:

          按照我在 cmets 部分的建议试试这个:

          <?php  
          $colors = array("red", "green", "blue", "yellow");
          $occurences = array_count_values($colors);
          
          foreach ($colors as $value) {
             echo "$value is $occurences[$value] <br>";
          }
          ?>  
          

          【讨论】:

            猜你喜欢
            • 2017-06-26
            • 1970-01-01
            • 2012-04-05
            • 2010-09-08
            • 2015-04-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多