2012-02-10 13 views
6

Ho una matrice che restituisce una serie di date richieste che vorrei separare in base al mese o all'anno in base a una variabile.Suddivisione di date in base al mese o all'anno

Esempio di matrice corrente:

array(4) { 

[0]=> string(10) "2012-02-01" 

[1]=> string(10) "2012-02-02" 

[2]=> string(10) "2011-02-03" 

[3]=> string(10) "2011-03-04" 

[4]=> string(10) "2011-04-05" 

} 

Per generare un grafico google in "mese" o vista "Anno" devo rompere questo array a parte e raggruppare le "anni" o "mesi" in base alle preferenze degli utenti che si troveranno in una variabile.

Esempio di ciò che ho bisogno restituito se in "Anno View"

array(2) { 

[0]=> Array(2) { 

     [0]=> string(10) "2012-02-01" 

     [1]=> string(10) "2012-02-02" 

} 

[1]=> Array(3) { 

     [0]=> string(10) "2011-02-03" 

     [1]=> string(10) "2011-03-14" 

     [2]=> string(10) "2011-04-18" 

} 

} 

non al 100% sicuro che sia una matrice di suono, ma ho bisogno di essere in grado di fare un "foreach" economico per ogni array insieme di date in modo da poter sommare tutti i valori (tutto ciò di cui ho bisogno è data per la funzione per ottenere il valore) e restituire un valore totale e l'anno che saranno tutti uguali poiché sono raggruppati e farò esplodere il anno dell'ultimo array nell'istruzione foreach.

Ecco lo stesso risultato atteso, ma nel "Mese" modalità di visualizzazione

array(3) { 

[0]=> Array(3) { 

     [0]=> string(10) "2012-02-01" 

     [1]=> string(10) "2012-02-02" 

     [2]=> string(10) "2011-02-03" 

} 

[1]=> Array(1) { 



     [1]=> string(10) "2011-03-14" 

} 

[2]=> Array(1) { 

     [1]=> string(10) "2011-04-18" 

} 

} 

Qualsiasi aiuto sarebbe molto apprezzato! Non riesco proprio a trovare una soluzione pur mantenendo tutto intatto.

risposta

11

Qualcosa di simile?

$years = Array(); 
$months = Array(); 
foreach($dates as $d) { 
    list($y,$m) = explode("-",$d); 
    $years[$y][] = $d; 
    $months[$y."-".$m][] = $d; 
} 
$years = array_values($years); 
$months = array_values($months); 

var_dump($years,$months); 
Problemi correlati