2017-01-24 1 views
-1

Ich möchte Gruppenfeldwerten meine Array wie unten mit 30 Minuten ZeitintervallGruppierung Array basierend auf den Werten

$arr = ["00:00","00:30","01:00","01:30","02:00","02:30","03:00","04:30","05:00","05:30"]; 

sieht möchte ich die Ausgabe wie

Array ([0] => Array ([0] => 00:00 [1] => 03:00),[1]=> Array ([0] => 04:30 [1] => 05:30)) ; 

Hier ist mein Code für die Erreichung das Ergebnis

$output = array(); 
$start = $arr[0]; 
for($i=1; $i<count($arr); $i++) { 
    if($i == count($arr)-1) { 
     $interval = array($start,$arr[$i]); 
     array_push($output,$interval); 
     break; 
    } 
    if((int)($arr[$i]) - (int)($arr[$i-1]) > 1) { 
     $interval = array($start,$arr[$i-1]); 
     array_push($output,$interval); 
     $start = $arr[$i]; 
    } 
} 
print_r($output); 

, aber ich habe das Ergebnis wie

01 sieht
Array ([0] => Array ([0] => 00:00 [1] => 05:30)) 

Dank

+0

Sie möchten mit 3 Stunden Intervall Gruppe? – Abbas

+0

kein Abbas. Ich möchte Array-Werte mit Start- und Endzeit mit 30-Minuten-Intervall gruppieren. Wenn die Zeit größer als 30 Minuten ist, wird sie als neues Array behandelt. –

+0

Bitte überprüfen Sie die Antwort. – Abbas

Antwort

1
$times = ["00:00","00:30","01:00","01:30","02:00","02:30","03:00","04:30","05:00","05:30"]; 

$result = array(); 

$index = 0; 
for ($i=0; $i < count($times); $i++){ 
    if($i == 0){ 
     $result[$index][] = $times[$i]; 
    }elseif($i == count($times)-1){ 
     $result[$index][] = $times[$i]; 
    }else{ 
     if((h2m($times[$i])-h2m($times[$i-1])) > 30){ 
      $result[$index][] = $times[$i-1]; 
      $index++; 
      $result[$index][] = $times[$i]; 
     } 
    } 
} 

var_dump($result); 


FUNCTION h2m($hours) { 
    $t = EXPLODE(":", $hours); 
    $h = $t[0]; 
    IF (ISSET($t[1])) { 
     $m = $t[1]; 
    } ELSE { 
     $m = "00"; 
    } 
    $mm = ($h * 60) + $t[1]; 
    RETURN $mm; 
} 
+0

Ich hoffe, es wird für Sie arbeiten. – Abbas

+0

danke abbas.its funktioniert gut –

Verwandte Themen