Как изменить мой формат массива в переполнении стека

Мой код генерирует массив, как это

Array
(
[0] => Array
(
[0] => 2015-05-28
[1] => 1
)
[1] => Array
(
[0] => 2015-05-29
[1] => 1
)
[2] => Array
(
[0] => 2015-06-02
[1] => 2
)
)

я хочу преобразовать его так же, как ниже

array(
[0] => Array
(
[0] => 05
[1] => 2
)
[1] => Array
(
[0] => 06
[1] => 2
)
);

Как я могу преобразовать массив, как этот первый месяц, а затем общее значение второго

-2

Решение

Извлечь месяц из key, а затем проверить, существует ли месяц в выходном массиве или нет.

<?php

$array = array(
array(
'2015-05-28',
1
), array(
'2015-05-29',
1
), array(
'2015-06-02',
2
)
);

$output = array();

foreach ($array as $val) {
$month = date('m', strtotime($val[0]));

if (isset($output[$month])) {
$output[$month] += $val[1];
} else {
$output[$month] = $val[1];
}
}

echo '<pre>';

print_r($output);

/*
Array
(
[05] => 2
[06] => 2
)
*/

?>
2

Другие решения

Действительно простое решение:

foreach($array as $date=>$entry) {
$month = substr($date, 3, 2); // <-- this requires the date strings to always have the exact same structure
if(!isset($newArray[$month]))
$newArray[$month] = 0;
$newArray[$month] += $entry;
}
4

$array = array(
array(
'2015-05-28',
1
),
array(
'2015-05-29',
1
),
array(
'2015-06-02',
2
)
);


$output = array();
$a=array();
$b=array();
foreach ($array as $val) {
$month = date('m', strtotime($val[0]));
if (isset($output[$month])) {
$output[$month] += $val[1];
} else {
$output[$month] = $val[1];
}
}
foreach (  $output as $key => $value) {
$b[] = array($key,$value);
}
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector