powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Переделать массив на php
9 сообщений из 9, страница 1 из 1
Переделать массив на php
    #38400187
tweaker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется массив:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Array
(
    [0] => Array
        (
            [count] => 43
            [user_id] => 1
            [fdate] => 2013/09/12
        )

    [1] => Array
        (
            [count] => 41
            [user_id] => 1
            [fdate] => 2013/09/13
        )

    [2] => Array
        (
            [count] => 52
            [user_id] => 2
            [fdate] => 2013/09/12
        )
)




Как привести данный массив на php к виду:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Array
(
    [0] => Array
    (
	[label] => 1
	[data]	=> Array
	(
		[2013/09/12] => 43
		[2013/09/13] => 41
	)
    )    
    [1] => Array
    (
	[label] => 2
	[data]	=> Array
	(
		[2013/09/12] => 52
		[2013/09/13] => 0
	)
    )
)
...
Рейтинг: 0 / 0
Переделать массив на php
    #38400243
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tweaker7,

навскидку - не проверял
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
$dates = array();
foreach ($data as $item) {
  if (!isset($dates[$item['fdate'])) {
    $dates[$item['fdate']] = 0;
  }
}

$result = array();
foreach ($data as $item) {
  if (!isset($result[$item['user_id']])) {
    $result[$item['user_id']] = array(
      'label' => $item['user_id'],
      'data' => $dates
    );
  }
  $result[$item['user_id']]['data'][$item['fdate']]+=$item['count'];
}
$result = array_values($result);
...
Рейтинг: 0 / 0
Переделать массив на php
    #38400516
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
foreach($db as $key => $value){
	$new_array[$value['user_id']]['label'] = $value['user_id'];
	if (!is_numeric($value['count'])) $value['count'] = 0;
	$new_array[$value['user_id']]['data'][$value['fdate']] = $value['count'];
}


print '<pre>';
$new_array = array_values($new_array);
print_r($new_array);



на выходе:

Код: 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.
Array
(
    [0] => Array
        (
            [label] => 1
            [data] => Array
                (
                    [2013/09/12] => 43
                    [2013/09/13] => 41
                )

        )

    [1] => Array
        (
            [label] => 2
            [data] => Array
                (
                    [2013/09/12] => 52
                )

        )

)
...
Рейтинг: 0 / 0
Переделать массив на php
    #38400693
tweaker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ренатtweaker7,

навскидку - не проверял
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
$dates = array();
foreach ($data as $item) {
  if (!isset($dates[$item['fdate'])) {
    $dates[$item['fdate']] = 0;
  }
}

$result = array();
foreach ($data as $item) {
  if (!isset($result[$item['user_id']])) {
    $result[$item['user_id']] = array(
      'label' => $item['user_id'],
      'data' => $dates
    );
  }
  $result[$item['user_id']]['data'][$item['fdate']]+=$item['count'];
}
$result = array_values($result);



судя по коду не проверяя даже тут только сработает:
Код: php
1.
$result[$item['user_id']]['data'][$item['fdate']]+=$item['count'];


И похожего чего мне нужно не будет даже.
...
Рейтинг: 0 / 0
Переделать массив на php
    #38401109
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tweaker7,

Я может что то не догнал но выводит то что вы и просили
Код: 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.
$data = array(
    Array(
            'count' => 43,
            'user_id' => 1,
            'fdate' => '2013/09/12'
    ),

    Array(
        'count' => 41,
         'user_id' => 1,
         'fdate' => '2013/09/13'
    ),
    Array (
        'count' => 52,
        'user_id' => 2,
        'fdate' => '2013/09/12'
    )

);
foreach ($data as $item) {
    if (!isset($dates[$item['fdate']])) {
        $dates[$item['fdate']] = 0;
    }
}

$result = array();
foreach ($data as $item) {
    if (!isset($result[$item['user_id']])) {
        $result[$item['user_id']] = array(
            'label' => $item['user_id'],
            'data' => $dates
        );
    }
    $result[$item['user_id']]['data'][$item['fdate']]+=$item['count'];
}
$result = array_values($result);
var_dump($result);die();

...
Рейтинг: 0 / 0
Переделать массив на php
    #38401596
tweaker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ренатtweaker7,

Я может что то не догнал но выводит то что вы и просили
Код: 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.
$data = array(
    Array(
            'count' => 43,
            'user_id' => 1,
            'fdate' => '2013/09/12'
    ),

    Array(
        'count' => 41,
         'user_id' => 1,
         'fdate' => '2013/09/13'
    ),
    Array (
        'count' => 52,
        'user_id' => 2,
        'fdate' => '2013/09/12'
    )

);
foreach ($data as $item) {
    if (!isset($dates[$item['fdate']])) {
        $dates[$item['fdate']] = 0;
    }
}

$result = array();
foreach ($data as $item) {
    if (!isset($result[$item['user_id']])) {
        $result[$item['user_id']] = array(
            'label' => $item['user_id'],
            'data' => $dates
        );
    }
    $result[$item['user_id']]['data'][$item['fdate']]+=$item['count'];
}
$result = array_values($result);
var_dump($result);die();


отлично, а как к такому виду привести?:

Код: 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.
Array
(
    [0] => Array
    (
	[label] => 1
	[data] => Array
	(
		Array
		(		
			[2013/09/12] => 43
		)
		Array
		(
			[2013/09/13] => 41
		)
	)
    )    
    [1] => Array
    (
	[label] => 2
	[data] => Array
	(
		Array
                (
			[2013/09/12] => 52
		)
		Array
		(
			[2013/09/13] => 0
		)
	)
    )
)
...
Рейтинг: 0 / 0
Переделать массив на php
    #38402109
tweaker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось но без нулей в датах, как можно нули вставить?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
$result = array();
foreach ($query as $item) 
{
	if (!isset($result[$item['user_id']]))
	{
		$result[$item['user_id']] = array(
			'label'	=> $item['user_id'],
			'data'	=> $dates
		);
	}
	$result[$item['user_id']]['data'][] = array(strtotime($item['fdate']), $item['count']);
}
...
Рейтинг: 0 / 0
Переделать массив на php
    #38403287
tweaker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет не у кого соображений?
...
Рейтинг: 0 / 0
Переделать массив на php
    #38404393
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну емае
Код: 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.
$data = array(
    Array(
            'count' => 43,
            'user_id' => 1,
            'fdate' => '2013/09/12'
    ),

    Array(
        'count' => 41,
         'user_id' => 1,
         'fdate' => '2013/09/13'
    ),
    Array (
        'count' => 52,
        'user_id' => 2,
        'fdate' => '2013/09/12'
    )

);
$dateToIndex = array();
foreach ($data as $item) {
    if (!isset($dateToIndex[$item['fdate']])) {
        $dateToIndex[$item['fdate']] = sizeof($dates);
        $dates[] = array($item['fdate'] => 0);
    }
}

$result = array();
foreach ($data as $item) {
    if (!isset($result[$item['user_id']])) {
        $result[$item['user_id']] = array(
            'label' => $item['user_id'],
            'data' => $dates
        );
    }
    $result[$item['user_id']]['data'][$dateToIndex[$item['fdate']]][$item['fdate']]+=$item['count'];
}
$result = array_values($result);
var_dump($result);die();

...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Переделать массив на php
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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