Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP разбить массив по дате / 5 сообщений из 5, страница 1 из 1
20.09.2016, 16:59
    #39312103
Nick-name
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP разбить массив по дате
Есть вот такой массив результат принт_р
Array
(
[0] => Array
(
[date] => 2016-09-01
[type] => mail
[count] => 248
)

[1] => Array
(
[date] => 2016-09-01
[type] => lk
[count] => 31
)

[2] => Array
(
[date] => 2016-09-01
[type] => operator
[count] => 1
)

[3] => Array
(
[date] => 2016-09-01
[type] => error
[count] => 296
)

[4] => Array
(
[date] => 2016-09-01
[type] => fbl
[count] => 496
)

[5] => Array
(
[date] => 2016-09-02
[type] => mail
[count] => 240
)

[6] => Array
(
[date] => 2016-09-02
[type] => lk
[count] => 17
)

[7] => Array
(
[date] => 2016-09-02
[type] => error
[count] => 13
)

[8] => Array
(
[date] => 2016-09-02
[type] => fbl
[count] => 416
)

[9] => Array
(
[date] => 2016-09-03
[type] => mail
[count] => 168
)

[10] => Array
(
[date] => 2016-09-03
[type] => lk
[count] => 18
)

[11] => Array
(
[date] => 2016-09-03
[type] => error
[count] => 11
)

[12] => Array
(
[date] => 2016-09-03
[type] => fbl
[count] => 328
)

[13] => Array
(
[date] => 2016-09-04
[type] => mail
[count] => 233
)

[14] => Array
(
[date] => 2016-09-04
[type] => lk
[count] => 23
)

[15] => Array
(
[date] => 2016-09-04
[type] => error
[count] => 137
)

[16] => Array
(
[date] => 2016-09-04
[type] => fbl
[count] => 340
)

[17] => Array
(
[date] => 2016-09-05
[type] => mail
[count] => 311
)

[18] => Array
(
[date] => 2016-09-05
[type] => lk
[count] => 31
)

[19] => Array
(
[date] => 2016-09-05
[type] => error
[count] => 655
)

[20] => Array
(
[date] => 2016-09-05
[type] => fbl
[count] => 490
)

[21] => Array
(
[date] => 2016-09-06
[type] => mail
[count] => 299
)

[22] => Array
(
[date] => 2016-09-06
[type] => lk
[count] => 29
)

[23] => Array
(
[date] => 2016-09-06
[type] => error
[count] => 1969
)

[24] => Array
(
[date] => 2016-09-06
[type] => fbl
[count] => 455
)

[25] => Array
(
[date] => 2016-09-07
[type] => mail
[count] => 297
)

[26] => Array
(
[date] => 2016-09-07
[type] => lk
[count] => 37
)

[27] => Array
(
[date] => 2016-09-07
[type] => operator
[count] => 1
)

[28] => Array
(
[date] => 2016-09-07
[type] => error
[count] => 1002
)

[29] => Array
(
[date] => 2016-09-07
[type] => fbl
[count] => 485
)

[30] => Array
(
[date] => 2016-09-08
[type] => mail
[count] => 280
)

[31] => Array
(
[date] => 2016-09-08
[type] => lk
[count] => 34
)

[32] => Array
(
[date] => 2016-09-08
[type] => error
[count] => 980
)

[33] => Array
(
[date] => 2016-09-08
[type] => fbl
[count] => 437
)

[34] => Array
(
[date] => 2016-09-09
[type] => mail
[count] => 270
)

[35] => Array
(
[date] => 2016-09-09
[type] => lk
[count] => 36
)

[36] => Array
(
[date] => 2016-09-09
[type] => error
[count] => 1605
)

[37] => Array
(
[date] => 2016-09-09
[type] => fbl
[count] => 434
)

[38] => Array
(
[date] => 2016-09-10
[type] => mail
[count] => 191
)

[39] => Array
(
[date] => 2016-09-10
[type] => lk
[count] => 17
)

[40] => Array
(
[date] => 2016-09-10
[type] => error
[count] => 444
)

[41] => Array
(
[date] => 2016-09-10
[type] => fbl
[count] => 288
)

[42] => Array
(
[date] => 2016-09-11
[type] => mail
[count] => 209
)

[43] => Array
(
[date] => 2016-09-11
[type] => lk
[count] => 15
)

[44] => Array
(
[date] => 2016-09-11
[type] => error
[count] => 150
)

[45] => Array
(
[date] => 2016-09-11
[type] => fbl
[count] => 316
)

[46] => Array
(
[date] => 2016-09-12
[type] => mail
[count] => 281
)

[47] => Array
(
[date] => 2016-09-12
[type] => lk
[count] => 29
)

[48] => Array
(
[date] => 2016-09-12
[type] => error
[count] => 145
)

[49] => Array
(
[date] => 2016-09-12
[type] => fbl
[count] => 418
)

[50] => Array
(
[date] => 2016-09-13
[type] => mail
[count] => 317
)

[51] => Array
(
[date] => 2016-09-13
[type] => lk
[count] => 41
)

[52] => Array
(
[date] => 2016-09-13
[type] => operator
[count] => 1
)

[53] => Array
(
[date] => 2016-09-13
[type] => error
[count] => 131
)

[54] => Array
(
[date] => 2016-09-13
[type] => fbl
[count] => 455
)

[55] => Array
(
[date] => 2016-09-14
[type] => mail
[count] => 284
)

[56] => Array
(
[date] => 2016-09-14
[type] => lk
[count] => 40
)

[57] => Array
(
[date] => 2016-09-14
[type] => error
[count] => 142
)

[58] => Array
(
[date] => 2016-09-14
[type] => fbl
[count] => 449
)

[59] => Array
(
[date] => 2016-09-15
[type] => mail
[count] => 302
)

[60] => Array
(
[date] => 2016-09-15
[type] => lk
[count] => 30
)

[61] => Array
(
[date] => 2016-09-15
[type] => operator
[count] => 1
)

[62] => Array
(
[date] => 2016-09-15
[type] => error
[count] => 204
)

[63] => Array
(
[date] => 2016-09-15
[type] => fbl
[count] => 446
)

[64] => Array
(
[date] => 2016-09-16
[type] => mail
[count] => 256
)

[65] => Array
(
[date] => 2016-09-16
[type] => lk
[count] => 34
)

[66] => Array
(
[date] => 2016-09-16
[type] => operator
[count] => 1
)

[67] => Array
(
[date] => 2016-09-16
[type] => error
[count] => 181
)

[68] => Array
(
[date] => 2016-09-16
[type] => fbl
[count] => 399
)

[69] => Array
(
[date] => 2016-09-17
[type] => mail
[count] => 180
)

[70] => Array
(
[date] => 2016-09-17
[type] => lk
[count] => 19
)

[71] => Array
(
[date] => 2016-09-17
[type] => error
[count] => 196
)

[72] => Array
(
[date] => 2016-09-17
[type] => fbl
[count] => 334
)

[73] => Array
(
[date] => 2016-09-18
[type] => mail
[count] => 215
)

[74] => Array
(
[date] => 2016-09-18
[type] => lk
[count] => 23
)

[75] => Array
(
[date] => 2016-09-18
[type] => error
[count] => 189
)

[76] => Array
(
[date] => 2016-09-18
[type] => fbl
[count] => 354
)

[77] => Array
(
[date] => 2016-09-19
[type] => mail
[count] => 323
)

[78] => Array
(
[date] => 2016-09-19
[type] => lk
[count] => 31
)

[79] => Array
(
[date] => 2016-09-19
[type] => error
[count] => 280
)

[80] => Array
(
[date] => 2016-09-19
[type] => fbl
[count] => 457
)

[81] => Array
(
[date] => 2016-09-20
[type] => mail
[count] => 14
)

[82] => Array
(
[date] => 2016-09-20
[type] => lk
[count] => 3
)

[83] => Array
(
[date] => 2016-09-20
[type] => fbl
[count] => 20
)

)

из него нужно сделать что-то вроде
Код: 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.
27.
28.
29.
30.
[0] =>array( array( 'date' => '2016-09-01',
                            'type' => 'mail',
                            'count' => 248),
                     array( 'date' => '2016-09-01',
                            'type' => 'lk',
                            'count' => 31),
                     array( 'date' => '2016-09-01',
                            'type' => 'operator',
                            'count' => 1),
                     array( 'date' => '2016-09-01',
                            'type' => 'error',
                           'count' => 296),
                     array( 'date' => '2016-09-01',
                           'type' => 'fbl',
                           'count' =>  496),

                   ),
 [1] =>array( array( 'date' => '2016-09-02',
                           'type' => 'mail',
                            'count' => 240),
                      array( 'date' => '2016-09-02',
                            'type' => 'lk',
                            'count' => 17),
                      array( 'date' => '2016-09-02',
                           'type' => 'operator',
                           'count' => 13),
                       array( 'date' => '2016-09-02',
                           'type' => 'error',
                            'count' => 416),
        ) . . .


Подскажите как так сделать
...
Рейтинг: 0 / 0
20.09.2016, 17:18
    #39312121
Sidmal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP разбить массив по дате
Ну я бы обошел бы массив foreach-ем и создал бы новый массив, ключем которого является форматированное представление даты.
А затем если принципиально на выходе иметь не ассоциативный массив, а обычный, то получил бы просто значения, используя функцию array_values
...
Рейтинг: 0 / 0
20.09.2016, 18:02
    #39312167
Nick-name
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP разбить массив по дате
Sidmal,

Не очень понял. Вот идёт ворыч
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
/**
* $rowArray исходный массив
* $newArray //новый массив
*/
$newArray = array(); //новый массив

foreach($rowArray as $key=>$item){
         // как определять как набирать новый массив?
         // признак вложенных массивов это дата
}
...
Рейтинг: 0 / 0
20.09.2016, 18:34
    #39312186
Sidmal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP разбить массив по дате
Nick-nameПодскажите как так сделать


Ну если речь шла именно о подсказке, то я ее очень прозрачно дал выше)
Ну а если конкретно, то вот реализация того, что вам требуется. Хоть я и не являюсь сторонником, чтобы делать за кого-то, просто такое настроение.)
Одна просьба - разберитесь в функционирование ассоциативных массивов!

Код под спойлером:

Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
$a = [
                [
                    'date' => '2016-09-01',
                    'type' => 'mail',
                    'count' => 248
                ],
                [
                    'date' => '2016-09-01',
                    'type' => 'lk',
                    'count' => 31
                ],
                [
                    'date' => '2016-09-01',
                    'type' => 'operator',
                    'count' => 1
                ],
                [
                    'date' => '2016-09-01',
                    'type' => 'error',
                    'count' => 296
                ],
                [
                    'date' => '2016-09-01',
                    'type' => 'fbl',
                    'count' => 496
                ],
                [
                    'date' => '2016-09-02',
                    'type' => 'mail',
                    'count' => 240
                ],
                [
                    'date' => '2016-09-02',
                    'type' => 'lk',
                    'count' => 17
                ],
                [
                    'date' => '2016-09-02',
                    'type' => 'error',
                    'count' => 13
                ],
                [
                    'date' => '2016-09-02',
                    'type' => 'fbl',
                    'count' => 416
                ],
                [
                    'date' => '2016-09-03',
                    'type' => 'mail',
                    'count' => 168
                ]
        ];

        $newArray = [];

        foreach ($a as $item) {
            if (!isset($newArray[$item['date']])) {
                $newArray[$item['date']] = [];
            }

            $newArray[$item['date']][] = $item;
        }

        print_r($newArray); //выведет массив в котором ключами выступают даты, по которым происходила группировка
        print_r(array_values($newArray)); //выведет массив с числовыми ключами


...
Рейтинг: 0 / 0
20.09.2016, 18:50
    #39312205
Nick-name
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP разбить массив по дате
Sidm
спасибо
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP разбить массив по дате / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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