Array sortieren - letzten 24 H

fixxxxxi

Erfahrenes Mitglied
Hallo,

ich nutze ein Array zur Ausgabe eines Graphen in einer dynamischen PNG Datei. In diesem Graphen sollen die letzten 24 Stunden ausgegeben werden. Mein Problem liegt darin, das im Moment nicht die tatsächlichen 24 Stunden ausgegeben werden, sondern der letzte Tag.

In der Datenbank ist es wie folgt eingetragen:
1(Datum):15(Zahl für den Graphen)|1:12|1:5|...|2:9|2:10|


Sprich im Moment: 0,1,2,3,4,5...21,22,23 Uhr

Das Ziel ist je nachdem wie spät es gerade ist, die tatsächlichen 24 Stunden auszugeben.

Sprich bei zB. 15:00 Uhr: 15,16,17,18...12,13,14 Uhr

So sieht der Teil im Moment aus:

PHP:
    while($vs=mysql_fetch_array($result)) { 
      $sarray = explode("|",$vs['num']);
    }  


    $count = 23;
    
		for($i = $count; $i > -1; $i--)
		{
		   $array_split = explode(":",$sarray[$i]);
                    $p_array     = $array_split[1];
 			 $array[] = $p_array ? $p_array : 0;
			}

Nun habe ich mir gedacht erstmal muss ich die aktuelle Stunde abfragen:

PHP:
	//aktuelle stunde
 $timestats = time();
  $ah = date("H",$timestats);
  $ad = date("d",$timestats);

//einstellige stunden 
 if(strpos($az,"0")!==false) {
  $ah = trim($az);
  $ah = substr($az, 1);}

Nun muss ich das Array irgendwie sortieren. aber wie? Das Hauptproblem liegt für mich darin, das bei 23:00 Uhr nen "Cut" gemacht werden muss und er bei 0 weiterzählt.

IDEE: Zwei Schleifen... zb aktuelle Zeit=15 Uhr - Dann zählt die erste Schleife von 15 bis 23 und die zweite von 0 bis 15-1. Aber die Umsetzung******

Wie stell ich das an?
 
Zuletzt bearbeitet:
Habs nun folgendermaßen gelöst:

PHP:
<?php

$array=array();

//Datenbankinhalt
$db='3:17|3:10|2:5|2:0|2:0|2:0|2:0|2:0|2:5|2:14|2:16|2:20|2:23|2:19|2:24|2:23|2:23|2:26|2:26|2:24|2:23|2:21|2:19|2:19|';

$sarray = explode("|",$db);
 
//aktuelle stunde
 $timestats = time();
  $az = date("H",$timestats);

//einstellige stunden 
 if(strpos($az,"0")!==false) {
  $ah = trim($az);
  $ah = substr($az, 1);}


//aktuelle zeit bis 00:00
{$start1=$ah;
while($start1 < 24)
{
       $array_split = explode(":",$sarray[$start1]);
       $p_array     = $array_split[1];
 			 $array[] = $p_array ? $p_array : 0;
    $start1++;
} 
}
//00:00 bis aktuelle Zeit
{$start=0;
$ende=$ah; 
while($start < $ende)
{      
       $array_split = explode(":",$sarray[$start]);
       $p_array     = $array_split[1];
 			 $array[] = $p_array ? $p_array : 0;
    $start++;
} 
}


print_r($array);


?>
 
Zurück