如何在对一个元素的值求平均值的同时循环数组,而只保留php中新平均的字段?

如何在对一个元素的值求平均值的同时循环数组,而只保留php中新平均的字段?,php,arrays,group-by,average,unset,Php,Arrays,Group By,Average,Unset,我有一个数据库,包含每天存储的分数。我想平均每个用户每个月的分数。到目前为止,我有: 数据库结构: id | name | tscore | added int| string | float(100 or less)| date(2014-01-01 16:34:22) 问题是此方法正在删除$chartData数组的所有元素。任何帮助都将不胜感激。您应该尝试使用MySQL解决此问题。尝试以下操作(用表名替换“您的分数表”): 你的逻辑是错误的。在同一数组中循

我有一个数据库,包含每天存储的分数。我想平均每个用户每个月的分数。到目前为止,我有:

数据库结构:

id | name    | tscore            | added 

int| string  | float(100 or less)| date(2014-01-01 16:34:22)

问题是此方法正在删除$chartData数组的所有元素。任何帮助都将不胜感激。

您应该尝试使用MySQL解决此问题。尝试以下操作(用表名替换“您的分数表”):


你的逻辑是错误的。在同一数组中循环两次。这意味着以下
if
始终计算为true,这意味着数组项将始终处于未设置状态

//This will always be true
if($chartData[$key]['id'] === $chartData[$key2]['id'] && $added[1] === $added2[1]){
创建另一个保存分数的数组可能更简单。差不多

$aScores = array();
$count = 1;
foreach($chartData as $key => $value){

    //Add score to a different array
    $aScores[$value['name']]['tscore'] = (($aScores[$value['name']]['tscore'] + $value['tscore']) / $count);

    $count++;
}

我还将研究MySQL函数。您可以使用它来避免在PHP中执行此操作。

附带说明,
mysql.*
已被弃用。使用
mysqli.*
PDO
和准备好的语句/变量绑定,以获得更好的未来。由于您需要平均值…有没有可能直接使用数据库功能?请显示数据库结构,这可能可以通过SQL@Passerby谢谢你的评论,我将开始使用mysqli。关于使用数据库功能,我不介意,问题是我该怎么做?看看PDO,而不是mysqli。我花了一段时间才习惯,但从长远来看,这是一个更好的解决方案。对不起,代码中有一些拼写错误。现在应该可以了。谢谢你的回答和建议。如果我能接受这两个答案,我也会接受你的。再次感谢
//This will always be true
if($chartData[$key]['id'] === $chartData[$key2]['id'] && $added[1] === $added2[1]){
$aScores = array();
$count = 1;
foreach($chartData as $key => $value){

    //Add score to a different array
    $aScores[$value['name']]['tscore'] = (($aScores[$value['name']]['tscore'] + $value['tscore']) / $count);

    $count++;
}