【问题标题】:Variable length data可变长度数据
【发布时间】:2021-10-10 01:07:50
【问题描述】:

我不确定如何处理这个问题。我在多个数组中有不同的数量。我试图根据哪个更高和哪个更低来获得分数/排名。但是数组中的项目数会影响它。

所以基本上 10 是高分,0 是低分。

$data1 = "4.12,9.95,2.44,3.80,10.68,-1.15,11.81";//possibly get median value from number set?
$data2 = "12.61"; // high score 
$data3 = "4.55,9.70,6.44,-1.04,12.55"; // 

$arr1 = explode(',',$data1);

foreach ($arr1 as $a1){

///calculate here




}

【问题讨论】:

  • 我不明白你的意思。如何计算排名?
  • 我已经更新了问题。基本上试图从低到高获得一个排名,0是低,10是高。问题是如何从 $data1 和 $data3 中获取平均数,我正在考虑对集合进行中值以获得排名,但不确定这是否是正确的方法
  • 那你想做什么?要获取中位数,请对数组进行排序并从中间获取元素。
  • 是的。我认为这会奏效。我只是不知道如何从多个数字中获取中值
  • 这能回答你的问题吗? Calculating Median of an array in PHP

标签: php


【解决方案1】:

下面是计算平均值、中位数和众数的代码。

这会接收分数字符串(已经用逗号分隔),然后将它们合并到一个数组中。

<?php

$data1 = "4.12,9.95,2.44,3.80,10.68,-1.15,11.81";//possibly get median value from number set?
$data2 = "12.61"; // high score 
$data3 = "4.55,9.70,6.44,-1.04,12.55"; // 

$merged = implode(',', [$data1, $data2, $data3]);

$scores = explode(',', $merged);

function mean($arr) 
{
    $count = count($arr);
    $sum = array_sum($arr);
    return number_format(($sum / $count), 2);
}

function median($numbers) 
{
    sort($numbers);
    $middleLength = floor((count($numbers) - 1) / 2);
    return number_format(($numbers[$middleLength] + $numbers[$middleLength + 1]) / 2, 2);
}

function mode($numbers)
{
    sort($numbers);
    $countRepeatedValues = array_count_values($numbers);
    $maxValue = max($countRepeatedValues);
    foreach ($countRepeatedValues as $number => $repeatedValue) {
        if ($repeatedValue == $maxValue) {
            return $number;
        }
    }
}

echo 'Mean: ' . mean($scores) . PHP_EOL;
echo 'Median: ' . median($scores) . PHP_EOL;
echo 'Mode: ' . mode($scores) . PHP_EOL;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-20
    • 2017-02-06
    • 2010-10-04
    • 2014-07-27
    • 2019-02-26
    • 2021-06-27
    • 2011-05-29
    相关资源
    最近更新 更多