Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加Array-PHP的内容_Php_Arrays_Math - Fatal编程技术网

添加Array-PHP的内容

添加Array-PHP的内容,php,arrays,math,Php,Arrays,Math,我有一个数组,其中包含一整堆分数。这是它的一小部分 Array ( [1] => Array ( [plus] => Array ( [2014-03-15 12:11:15] => 100 [2014-03-15 12:14:18] => 100 [2014-03-15 1

我有一个数组,其中包含一整堆分数。这是它的一小部分

Array
(
    [1] => Array
        (
            [plus] => Array
                (
                    [2014-03-15 12:11:15] => 100
                    [2014-03-15 12:14:18] => 100
                    [2014-03-15 12:42:43] => 100
                    [2014-03-15 12:46:29] => 100
                    [2014-03-15 15:19:25] => 500
                    [2014-03-15 15:20:14] => 500
                    [2014-03-15 15:20:15] => 400
                    [2014-03-15 15:20:16] => 300
                    [2014-03-15 15:20:19] => 500
                    [2014-03-15 15:20:20] => 300
                )

            [minus] => Array
                (
                    [2014-03-15 15:19:23] => 500
                    [2014-03-15 15:19:27] => 500
                    [2014-03-15 15:20:12] => 300
                    [2014-03-15 15:20:13] => 400
                    [2014-03-15 15:20:14] => 500
                    [2014-03-15 15:20:18] => 300
                )

        )

    [2] => Array
        (
            [plus] => Array
                (
                    [2014-03-15 12:14:35] => 100
                    [2014-03-15 15:28:58] => 200
                    [2014-03-15 15:28:59] => 300
                    [2014-03-15 15:29:00] => 700
                    [2014-03-15 16:25:50] => 1000
                )

            [minus] => Array
                (
                    [2014-03-15 16:26:10] => 900
                    [2014-03-15 16:26:11] => 100
                    [2014-03-15 16:26:12] => 200
                    [2014-03-15 16:26:13] => 600
                    [2014-03-15 16:26:14] => 800
                )

        )

)

$team1positive = 
$team2positive =
$team1negative = 
$team2negative = 
我试图把四组的分数加起来

我似乎找不到一种方法来循环数组并添加到正确的变量中

我用来创建数组$scores的代码是

$scores = array();
while ( $line = $result->fetch_assoc() ) {
    $scores[$line['team']][$line['score_type']][$line['date']] = $line['score'];
}
所有数据都在一个mysql表中,我正在使用mysqli访问它


提前感谢。

PHP实际上为您的用例提供了一个非常简单的函数:将数组的值求和并返回一个整数或浮点:

$team1positive = array_sum($scores[1]['plus']);
$team1negative = array_sum($scores[1]['minus']);
$team2positive = array_sum($scores[2]['plus']);
$team2negative = array_sum($scores[2]['minus']);

如果您可以自由修改MySQL查询,还可以结合使用MySQLs聚合函数和:

假设您最初有一个查询“布局”,如(当然这是一个简单的示例)

您可以重写它,通过
团队
类型
直接获得结果分数:

SELECT team, type, SUM(score) as scores FROM `table_xy` GROUP BY team, type;
这将返回类似于

$scores = array(
    0 => array('team' => 1, 'type' => 'plus', 'scores' => 7000), // example value
    1 => array('team' => 1, 'type' => 'minus', 'scores' => 7000),
    2 => array('team' => 2, 'type' => 'plus', 'scores' => 7000),
    3 => array('team' => 2, 'type' => 'minus', 'scores' => 7000),
);

这不是这么简单吗

$scores = array();

while ( $line = $result->fetch_assoc() ) {
    if(!isset($scores[$line['team']][$line['score_type']])) {
        $scores[$line['team']][$line['score_type']] = 0;
    } 
    $scores[$line['team']][$line['score_type']] += $line['score'];
}

$team1positive = $scores[1]['plus'];
$team2positive = $scores[2]['plus'];
$team1negative = $scores[1]['minus'];
$team2negative = $scores[2]['minus'];

您可能希望对查询本身执行此操作。您使用了什么查询?谢谢,更改MySQL查询帮助很大,节省了数百个结果的循环。这个数组也很酷。再次感谢。
$scores = array();

while ( $line = $result->fetch_assoc() ) {
    if(!isset($scores[$line['team']][$line['score_type']])) {
        $scores[$line['team']][$line['score_type']] = 0;
    } 
    $scores[$line['team']][$line['score_type']] += $line['score'];
}

$team1positive = $scores[1]['plus'];
$team2positive = $scores[2]['plus'];
$team1negative = $scores[1]['minus'];
$team2negative = $scores[2]['minus'];