获得在一个关联数组值的差

问题描述 投票:0回答:1

我有这样的阵列

 Array
(
    [0] => Array
        (
            [sexo_edad] => type1
            [fans] => 2
        )

    [1] => Array
        (
            [sexo_edad] => type2
            [fans] => 3
        )

    [2] => Array
        (
            [sexo_edad] => type1
            [fans] => 8
        )
    [3] => Array
        (
            [sexo_edad] => type2
            [fans] => 10
        )

)

如何根据,而TYPEx键获得值的差,并且如以下所示的阵列应出现

    Array
    (
        [0] => Array
            (
                [sexo_edad] => type1
                [fans] => 2
                [difference] => 0
            )
    [1] => Array
        (
            [sexo_edad] => type2
            [fans] => 3
            [difference] => 0
        )

    [2] => Array
        (
            [sexo_edad] => type1
            [fans] => 8
            [difference] => +6
        )
    [3] => Array
        (
            [sexo_edad] => type2
            [fans] => 10
           [difference] => +7
        )
)

注意,类型1和type2值是分别减去在关联数组称为差的新值获得的差值

php arrays
1个回答
1
投票

您可以通过数组循环,检查,看看是否你已经看到这种类型的值之前,如果是采取与上次值之差,差值否则设置为0,在这两种情况下,我们储存以备将来计算的当前值:

$type_values = array();
foreach ($array as &$arr) {
    if (isset($type_values[$arr['sexo_edad']])) {
        $arr['difference'] = $arr['fans'] - $type_values[$arr['sexo_edad']];
    }
    else {
        $arr['difference'] = 0;
    }
    $type_values[$arr['sexo_edad']] = $arr['fans'];
}
print_r($array);

输出:

Array ( 
    [0] => Array (
        [sexo_edad] => type1
        [fans] => 2
        [difference] => 0 
    )
    [1] => Array (
        [sexo_edad] => type2
        [fans] => 3
        [difference] => 0 
    )
    [2] => Array (
        [sexo_edad] => type1
        [fans] => 8
        [difference] => 6
    )
    [3] => Array (
        [sexo_edad] => type2
        [fans] => 10
        [difference] => 7
    ) 
)

Demo on 3v4l.org

© www.soinside.com 2019 - 2024. All rights reserved.