2016-04-19 18 views
1

I $post im folgenden FormatWie erstellt man ein neues Array mit Schlüsseln basierend auf berechneten Werten eines anderen Arrays?

$post[0] = [ 
    'id' => '103', 
    'date' => '2016-04-17 16:30:12', 
    'desc' => 'content description' 
]; 

$post[1] = [ 
    'id' => '102', 
    'date' => '2016-04-17 12:30:12', 
    'desc' => 'content description' 
]; 

$post[2] = [ 
    'id' => '101', 
    'date' => '2016-04-17 10:30:12', 
    'desc' => 'content description' 
]; 

$post[3] = [ 
    'id' => '100', 
    'date' => '2016-04-16 08:30:12', 
    'desc' => 'content description' 
]; 

eine Reihe habe ich möchte strtotime(date) vom $post als einzigartige Array-Schlüssel verwenden, und erstellen:

$summary['day-of-2016-04-17'] = [ 
    'counts' => '3' 
]; 

$summary['day-of-2016-04-16'] = [ 
    'counts' => '1' 
]; 

Wo counts die Anzahl der Vorkommen des Datums, das als Schlüssel verwendet wird.

Ich muss nur das Datum selbst behalten, da der eindeutige Schlüssel und der Zeitwert irrelevant sind.

Ich brauche den Schlüsselwert Unix Zeitstempel für die weitere Verarbeitung.

Wie kann ich dies auf die effizienteste Weise implementieren?

Antwort

1

Verwenden Sie einfach die date als Schlüssel. Der einfachste Weg wäre, einfach die Datumszeit zu explodieren, das erste Fragment (das ist das Datum) zu erhalten und es wie jedes normale Array zuzuweisen:

$summary = []; 
foreach($post as $value) { 
    $dt = explode(' ', $value['date']); // break the date 
    $day_of = "day-of-{$dt[0]}"; // create the naming key 
    if(!isset($summary[$day_of])) { // initialize 
     $summary[$day_of]['counts'] = 0; 
    } 
    $summary[$day_of]['counts']++; // increment 
} 
Verwandte Themen