【问题标题】:PHP counting different numeric returned values in loopPHP在循环中计算不同的数字返回值
【发布时间】:2013-09-21 18:07:46
【问题描述】:

在 PHP foreach 循环中,我有一个名为 $levels 的变量。该变量为每个循环提供不同的值。这些值都是数字。这些数字在循环的多个实例中也是通用的。

例如,一些循环可能会返回数字 7,而其他循环可能会返回 4,而一个可能会返回 3。我希望能够确定循环期间生成的最常见的数值。

关于如何实现这一点的任何建议?

【问题讨论】:

  • 摆脱,这是正确的循环返回一个数字。大多数时候,这些数字是唯一的,但有时它们是相同的。我想退回退回最多的那个。如果它们都返回相同的时间,则返回最大的数字。
  • 请添加您目前拥有的代码,这样更容易为您提供帮助
  • 提供少量被认为是 SO 的好习惯
  • 只计算每个被退回的次数。您可以使用+ 添加

标签: php loops foreach


【解决方案1】:

在循环期间,您可以创建一个数组(例如 $loopArray)并用生成的所有值填充它。在循环结束时,您可以计算数组的模式(示例取自 this answer)。

$values = array_count_values($loopArray); 
$mode = array_search(max($loopArray), $loopArray);

【讨论】:

  • 数据集中重复次数最多的值叫做mode,我贴出代码来找到它!
【解决方案2】:

将循环值存储到数组中。

$stuff = array('orange','banana', 'apples','orange', 'xxxxxxx');

$result = array_count_values($stuff);
asort($result);
end($result);
$answer = key($result);

echo $answer;

我希望你会这样!

【讨论】:

  • 这就像 Ashwini Agarwal 的代码一样。两者的唯一问题是,如果返回的值每个只存在一次,那么它似乎不会返回最高的数字。如果它们都相同,我希望返回最大的数字。
【解决方案3】:

你可以做这样的事情......

$return = array();
foreach($array as $key => $value) {

    ...

    $return[] = $levels;
}

$count = array_count_values($return);
arsort($count);

$keys = array_keys($count);
echo "The most occurring value is $keys[0][1] with $keys[0][0] occurrences."

【讨论】:

    【解决方案4】:

    你可以试试这样的

    $a = array(1,2,3,4,5,5,6,7,8,8,8,8,9,5,5);
    $test = array();
    foreach ($a as $value) {
        //echo $value."<br>";
        $test[$value][] = $value;
    }
    echo "--------------------------<br>";
    echo count($test[8]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 2023-03-09
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多