yellu | Salut,
Je passerai par un tri, puis une serialisation, puis un pack des plages consurrentes, voici mon code :
Code :
- <?php
- $plages = array(
- "06-08" => "7",
- "08-10" => "7",
- "10-12" => "7",
- "18-20" => "7",
- "20-22" => "7",
- "22-24" => "7",
- );
- function fusion_plages($plages) {
- # On tri au cas ou
- ksort($plages);
- # On serialize
- $plages = implode(';', array_keys($plages));
- do {
- $try = false;
- # On chope les plages qui se suivent
- preg_match_all('#(\-[0-9]{2};[0-9]{2}\-)#', $plages, $match);
- foreach($match[1] as $match) {
- # On verifie les plages qui se suivent bout a bout
- if(substr($match, 1, 2) == substr($match, 4, 2)) {
- # On collapse les plages
- $plages = str_replace($match, '-', $plages);
- $try = true;
- }
- }
- } while($try === true);
- # On desarialize
- return explode(';', $plages);
- }
- $fusion_plages = fusion_plages($plages);
- var_dump($fusion_plages);
|
A+
|