2016-04-13 23 views
-1

Ich habe WerteGruppe Datum im Monat und Jahr php Datum

5. Mai 2016, 19. Mai 2016, 26. Mai 2016, 2. Juni 2016, 16. Juni 2016, 23. Juni 2016, 7. Juli 2016, 14. Juli 2016

wie kann ich zeigen, dies mit PHP als:

05,19,26 Mai 2016
02, 16,23 Juni 2016
07,14 Juli 2016

+0

'5. Mai 2016, 19. Mai 2016, 26. Mai 2016, 02. Juni 2016 16. Juni 2016, 23. Juni 2016, den 07. Juli 2016, 14. Juli 2016 'ist ein String oder sind das mehrere Strings in einem Array? – eol

+0

Wert aus Array mysql – devan

+0

Wie führen Sie das Datum in Ihrer DB aus? –

Antwort

0

das Array Unter der Annahme funktionieren soll so etwas wie dieses Stück Code bestellt:

<?php 
$str = '05 May 2016, 19 May 2016, 26 May 2016, 02 June 2016, 16 June 2016, 23 June 2016, 07 July 2016, 14 July 2016'; 
$arr = explode(',',$str); // 
$results = array(); 
$currResStr = ''; 
$lastMonth = ''; 
$lastYear = ''; 
$appendMonth = false; 
$elCount = count($arr); 
for ($i=0; $i < $elCount; $i++) { 
    preg_match("/([0-9]{2})\s([a-zA-z]+)\s([0-9]*)/", $arr[$i], $match); 
    if($i+1 < $elCount){ 
     preg_match("/([0-9]{2})\s([a-zA-z]+)\s([0-9]*)/", $arr[$i+1], $match2); 
     if($match[2] !== $match2[2]){ 
      $appendMonth = true; 
     }else{ 
      $appendMonth = false; 
     } 
     if($appendMonth || $i+1 >= count($arr)){ 
      $currResStr .= $match[1].' '.$match[2].' '.$match[3]; 
      array_push($results,$currResStr); 
      $currResStr = ''; 
     }else{ 
      $currResStr .= $match[1].','; 
     } 
    }else{ 
     $currResStr .= $match[1].' '.$match[2].' '.$match[3]; 
     array_push($results,$currResStr); 
    } 
} 
var_dump($results); 
?> 

druckt:

array(3) { [0]=> string(17) "05,19,26 May 2016" [1]=> string(18) "02,16,23 June 2016" [2]=> string(15) "07,14 July 2016" } 
0

Das sind meine drei Schritten:

  1. Explode auf Kommata
  2. Schleife temporäre Schlüssel zuzuordnen, die die Daten zur Gruppe dienen
  3. Schleife, um die Werte anzuzeigen

Code:

$string='05 May 2016, 19 May 2016, 26 May 2016, 02 June 2016, 16 June 2016, 23 June 2016, 07 July 2016, 14 July 2016'; 
foreach(explode(', ',$string) as $date){ 
    $groups[substr($date,3)][]=substr($date,0,2); 
} 
foreach($groups as $monthyear=>$days){ 
    echo implode(',',$days)," $monthyear<br>"; 
} 

Ausgang:

05,19,26 May 2016 
02,16,23 June 2016 
07,14 July 2016 

Für t er gleiche Ergebnis konnte man eine zweite Explosion in der ersten Schleife wie folgt verwenden:

foreach(explode(', ',$string) as $date){ 
    $parts=explode(' ',$date,2); 
    $groups[$parts[1]][]=$parts[0]; 
} 
foreach($groups as $monthyear=>$days){ 
    echo implode(',',$days)," $monthyear<br>"; 
} 
Verwandte Themen