Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Переделать массив на php / 9 сообщений из 9, страница 1 из 1
18.09.2013, 14:27
    #38400187
tweaker7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переделать массив на php
Имеется массив:
Код: 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
18.09.2013, 15:01
    #38400243
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переделать массив на php
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
18.09.2013, 16:57
    #38400516
Переделать массив на php
Код: 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
18.09.2013, 18:49
    #38400693
tweaker7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переделать массив на php
Ренат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
19.09.2013, 10:22
    #38401109
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переделать массив на php
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
19.09.2013, 15:04
    #38401596
tweaker7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переделать массив на php
Ренат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
19.09.2013, 20:58
    #38402109
tweaker7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переделать массив на php
Получилось но без нулей в датах, как можно нули вставить?
Код: 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
20.09.2013, 22:19
    #38403287
tweaker7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переделать массив на php
нет не у кого соображений?
...
Рейтинг: 0 / 0
23.09.2013, 10:39
    #38404393
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переделать массив на php
ну емае
Код: 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
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Переделать массив на php / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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