我有一个输出的数组:
Array (
[0] => Array ( [week] => 1 )
[1] => Array ( [user] => 1 )
[2] => Array ( [score] => 6 )
[3] => Array ( [week] => 1 )
[4] => Array ( [user] => 15 )
[5] => Array ( [score] => 6 )
[6] => Array ( [week] => 2 )
[7] => Array ( [user] => 1 )
[8] => Array ( [score] => 5 )
[9] => Array ( [week] => 2 )
[10] => Array ( [user] => 15 )
[11] => Array ( [score] => 7 )
如何从阵列中删除用户1的最低分数(在第2周中为5)?我只想从用户1的数组中删除最小的数字,然后想要为用户15做同样的事情(在第1周将是6)。
然后,我如何按用户对数组中的剩余分数求和?将会有更多的周数据,我总是希望在任何一周内降低每位用户的最低价格。
因此,到目前为止,用户1的总分将是6到2周,用户15的总分将是7到2周。如果第3周的两个用户得分较低,那么他们的总数将是:用户1 = 11和用户15 = 13.
提前致谢!!
答案 0 :(得分:0)
假设所有记录都是3组:
$array = array(/* your data */);
$count = count($array) / 3;
$lowest = 0;
$min = PHP_INT_MAX;
for($i = 0; $i < $count; $i++)
{
if($array[$i + 1]['user'] == 1)
{
if($array[$i + 2]['score'] < $min)
{
$min = $array[$i + 2]['score'];
$lowest = $i;
}
}
}
unset($array[$lowest]);
unset($array[$lowest + 1]);
unset($array[$lowest + 2]);
至少应该给你这个想法。
答案 1 :(得分:0)
您的阵列结构很奇怪。为什么每个数组元素本身都是单例数组?像下面这样的东西会更有意义:
$array_better = array (
[0] => array (
['week'] => 1,
['user'] => 1,
['score'] => 6
),
[1] => array (
['week'] => 1,
['user'] => 15,
['score'] => 6
),
[2] => array (
['week'] => 2,
['user'] => 1,
['score'] => 5
),
[3] => array (
['week'] => 2,
['user'] => 15,
['score'] => 7
)
)
但就此而言,更有意义的是$array[$week][$user]
结构,如下所示:
$array_wu = array (
[1] => array (
[1] => 6,
[15] => 6
),
[2] => array (
[1] => 5,
[15] => 7
)
)
(如果你不明白我在这里做了什么,请问我这件事。)
或者,您可以再次使用$array[$user][$week]
结构:
$array_uw = array (
[1] => array (
[1] => 6,
[2] => 5
),
[15] => array (
[1] => 6,
[2] => 7
)
)
这尤其会让你很容易做你想做的事情 - 事实上它只需要一个代码行语句:
$sum_excl_lowest = (array_key_exists(1, $array_uw) and count($array_uw[1])) ?
array_sum($array_uw[1]) - min($array_uw[1]) :
0;