丢弃数组元素和剩余余数元素

时间:2011-06-07 00:20:27

标签: php mysql

我有一个输出的数组:

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.

提前致谢!!

2 个答案:

答案 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;