Мой код генерирует массив, как это
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
)
);
Как я могу преобразовать массив, как этот первый месяц, а затем общее значение второго
Извлечь месяц из 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
)
*/
?>
Действительно простое решение:
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;
}
$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);
}
}