как исключить сумму массива формы элемента в php? - PullRequest
0 голосов
/ 31 октября 2011

у меня есть этот массив:

[Jessica CS] => Array
    (
        [2011-04-20] => Array
            (
                [0] => 69.90
                [cancel] => 1311145200
                [1] => 29.95
                [2] => 69.90
            )
    )

[Rex CS] => Array
    (
        [2011-04-20] => Array
            (
                [0] => 119.94
                [cancel] => 
            )

        [2011-04-26] => Array
            (
                [0] => 199.50
                [cancel] => 
                [1] => 29.95
            )
....

и я складываю эти значения, используя цикл:

$i=0;
foreach($dates as $d){
$total[$i] += array_sum($value[$d]);
#i++;
}

это сложит все вместе, и я хочу исключить добавление поля [cancel] в array_sum

edit: я мог бы добавить значения int, но не уверен, как их отсортировать

есть идеи?

спасибо

Ответы [ 2 ]

1 голос
/ 31 октября 2011

Лично я бы изменил расположение массива так, чтобы он выглядел более следующим образом:

[Jessica CS] => Array
    (
        [2011-04-20] => Array
            (
                [cancel] => 1311145200
                [costs] => Array
                    (
                        [0] => 69.90
                        [1] => 29.95
                        [2] => 69.90
                    )
                )
    )

Замена [затрат] на любое имя, которое наиболее подходит.

РаботаВаш существующий массив
В противном случае

$i=0;
foreach($dates as $d){
    $total[$i] += array_sum(array_diff_key($value[$d], array('cancel'));
    #i++;
}
0 голосов
/ 31 октября 2011

Просто переберите массив, возможно, так:

$input = array(
    'Jessica CS' => array(
        '2011-04-20' => array(
            0 => 69.9,
            'cancel' => 1311145200,
            1 => 29.95,
            2 => 69.90,
        ),
    ),
    'Rex CS' => array(
        '2011-04-20' => array(
            0 => 119.94,
            'cancel' => null,
        ),
        '2011-04-26' => array(
            0 => 199.50,
            'cancel' => null,
            1 => 29.95,
        )
    )
);

$totals = array();

foreach($input as $person => $dates){
    $totals[$person] = 0;
    foreach ($dates as $date => $values) {
        foreach ($values as $key => $val) {
            if ($key !== 'cancel') {
                $totals[$person] += $val;
            }
        }
    }
}

print_r($totals)

Производит:

Array
(
    [Jessica CS] => 169.75
    [Rex CS] => 349.39
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...