Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / двумерный массив сложить 1 и 2 значение, 2 и 3 и тд... / 6 сообщений из 6, страница 1 из 1
17.07.2014, 18:01
    #38699532
NightWolfq
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двумерный массив сложить 1 и 2 значение, 2 и 3 и тд...
Добрый день такая задача есть

массив


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Array
(
    [0] => Array
        (
            [0] => 2014-06-26 14:26:38
            [1] => 50324
            [2] => 11944.4
            [3] => 163.741
            [4] => 12674
        )

    [1] => Array
        (
            [0] => 2014-06-26 14:27:56
            [1] => 53814
            [2] => 12891.9
            [3] => 56.9736
            [4] => 7599.63
        )

    [2] => Array
        (
            [0] => 2014-06-26 14:27:56
            [1] => 50324
            [2] => 13235.8
            [3] => 6.14431
            [4] => 10629.6
        )

    [3] => Array
        (
            [0] => 2014-06-26 14:27:58
            [1] => 53814
            [2] => 12941.4
            [3] => 5.98144
            [4] => 10169.8
        )

    [4] => Array
        (
            [0] => 2014-06-26 14:27:58
            [1] => 50324
            [2] => 12934.2
            [3] => 5.98144
            [4] => 10148.3
        )

)



нужно сложить объединить значения сравнить если

перебрать все значения и если [1] совпадают то сортировать по [0] и

[2] сложить со следующим значением [2]

пример

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
 [0] => Array
        (
            [0] => 2014-06-26 14:26:38
            [1] => 50324
            [2] => 11944.4
            [3] => 163.741
            [4] => 12674
        )


[1] => 50324 совпадает с

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
   [2] => Array
        (
            [0] => 2014-06-26 14:27:56
            [1] => 50324
            [2] => 13235.8
            [3] => 6.14431
            [4] => 10629.6
        )


отсортировать по дате и сложить [2] => 13235.8 с [2] => 11944.4 и вывести результат
потом
найти
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
    [4] => Array
        (
            [0] => 2014-06-26 14:27:58
            [1] => 50324
            [2] => 12934.2
            [3] => 5.98144
            [4] => 10148.3
        )


и [2] => 11944.4 сложить с [2] => 12934.2 и вывести результат


как закончатся совпадения 50324
взять [1] => 53814
и тд
...
Рейтинг: 0 / 0
17.07.2014, 18:35
    #38699592
NightWolfq
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двумерный массив сложить 1 и 2 значение, 2 и 3 и тд...
подробный пример

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Array
(
    [0] => Array
        (
            [0] => 2014-06-26 14:26:38
            [1] => 50324
            [2] => 11944.4
            [3] => 163.741
            [4] => 12674
        )
 
    [1] => Array
        (
            [0] => 2014-06-26 14:27:56
            [1] => 53814
            [2] => 12891.9
            [3] => 56.9736
            [4] => 7599.63
        )
 
    [2] => Array
        (
            [0] => 2014-06-26 14:27:56
            [1] => 50324
            [2] => 13235.8
            [3] => 6.14431
            [4] => 10629.6
        )
 
    [3] => Array
        (
            [0] => 2014-06-26 14:27:58
            [1] => 53814
            [2] => 12941.4
            [3] => 5.98144
            [4] => 10169.8
        )
 
    [4] => Array
        (
            [0] => 2014-06-26 14:27:58
            [1] => 50324
            [2] => 12934.2
            [3] => 5.98144
            [4] => 10148.3
        )
 
)



найти
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    [0] => Array
        (

            [1] => 50324

        )
    [2] => Array
        (

            [1] => 50324

        )


и отсортировать
[0] => 2014-06-26 14:26:38
и
[0] => 2014-06-26 14:27:56

сложить
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(
    [0] => Array
        (

            [2] => 11944.4

        )
    [2] => Array
        (

            [2] => 13235.8

        )



и вывести результат


потом

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    [2] => Array
        (
            [0] => 2014-06-26 14:27:56
            [1] => 50324
            [2] => 13235.8
            [3] => 6.14431
            [4] => 10629.6
        )
 
    [4] => Array
        (
            [0] => 2014-06-26 14:27:58
            [1] => 50324
            [2] => 12934.2
            [3] => 5.98144
            [4] => 10148.3
        )



потом
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    [1] => Array
        (
            [0] => 2014-06-26 14:27:56
            [1] => 53814
            [2] => 12891.9
            [3] => 56.9736
            [4] => 7599.63
        )
     [3] => Array
        (
            [0] => 2014-06-26 14:27:58
            [1] => 53814
            [2] => 12941.4
            [3] => 5.98144
            [4] => 10169.8
        )
...
Рейтинг: 0 / 0
17.07.2014, 23:53
    #38699771
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двумерный массив сложить 1 и 2 значение, 2 и 3 и тд...
NightWolfq,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
$list = ...; // твой исх. массив

$index = $indexGr = $indexGrF = [];
foreach($list as $i => $b)
{
    if (!isset($indexGrF[$b[1]])) { $indexGr[] = $b[1]; $indexGrF = array_flip($indexGr); }
    $index[$i] = $b[1].":".((strtotime($b[0]) - mktime(0, 0, 0, 1, 1, 2000)) + ($i * pow(10, -6)));
}

natsort($index);

$out = [];
$c = "";
foreach($index as $i => $b) 
{
    $gr = explode(":", $b)[0];
    if ($gr !== $c) { $sum = $a[$i][2]; $c = $gr; continue; }
    $sum += $a[$i][2];
    $out[$gr][] = $sum;
}

foreach($indexGr as $gr) 
{
    print_r("Группа: $gr<br>");
    foreach($out[$gr] as $sum) print_r("$sum<br>"); 
}




Если есть желание можешь
в качестве благодарности купить мне кофе
...
Рейтинг: 0 / 0
18.07.2014, 00:00
    #38699775
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двумерный массив сложить 1 и 2 значение, 2 и 3 и тд...
В приведенном решении сумма идет накопительная.
Если надо, чтобы сумма всегда была только попарно, тогда

вот эти две строчки

Код: php
1.
2.
$sum += $a[$i][2];
$out[$gr][] = $sum;



просто замени на вот эти две строчки:

Код: php
1.
2.
$out[$gr][] = $sum + $a[$i][2];
$sum = $a[$i][2];



и тогда подсчет будет как в исходной задаче
...
Рейтинг: 0 / 0
18.07.2014, 04:21
    #38699838
NightWolfq
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двумерный массив сложить 1 и 2 значение, 2 и 3 и тд...
Lumix,

ооо похоже то что нужно!

только вот вопрос
Notice: Undefined variable: a in p.php on line 248
Notice: Undefined variable: a in p.php on line 249
Notice: Undefined variable: a in p.php on line 250

Код: php
1.
2.
3.
4.
    $gr = explode(":", $b)[0];
    if ($gr !== $c) { $sum = $a[$i][2]; $c = $gr; continue; }
$out[$gr][] = $sum + $a[$i][2];
$sum = $a[$i][2];


откуда берется переменная a? она по идеи массив но вот откуда?
...
Рейтинг: 0 / 0
19.07.2014, 14:50
    #38701011
NightWolfq
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двумерный массив сложить 1 и 2 значение, 2 и 3 и тд...
дошло $a это первоначальный массив
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / двумерный массив сложить 1 и 2 значение, 2 и 3 и тд... / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]