2015-06-04 3 views
-2

Мой код генерировать массив как этотКак изменить массива Формат В PHP

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

Сообщение исходной структуры массива –

+0

редактировать вопрос, пожалуйста, проверьте –

+1

Ваш код не имеет смысла. Пожалуйста, напишите свой ожидаемый результат, ваш текущий выход и ваш текущий вход! – Rizier123

ответ

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 
    ) 
*/ 

?> 
+0

Привет, пантера Спасибо за ответ, но вы можете снова проверить вопрос у меня. У меня есть какое-то изменение в qustion. –

+0

@vaibhavahalpara: так просто используйте вложенный цикл foreach. Основная идея та же. – panther

+0

@vaibhavahalpara: Я обновил свой ответ, проверьте его. – panther

4

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

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; 
} 
+0

Лучше использовать 'date & strtotime' вместо' substr', если нам нужно проанализировать дату. – panther

+0

В общем да, но substr определенно быстрее, и нет необходимости в этом, если структура всегда одна и та же. – treegarden

0
$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); 
     } 
} 
Смежные вопросы