Moin!
schleife von dem gefundener stelle nach unten laufen, so lange der datumswert sich nur in ein Tag abweicht.
$start="";
$laufdatum=$gesuchtedatum;
$tag=1;
for($i=$pos-1;$i>=0;$i--){
hier vergleichst Du $laufdatum, was gleich ist mit $gesuchtedatum mit $array[$i]. Aber Du ziehst vorher von $laufdatum was ab. Und zwar die Anzahl der Tage, die Du mitzählst. Anschließend setzt Du $laufdatum aber auf $arry[$i] und ziehst im nächsten Durchlauf wieder $tage ab, also doppelt soviel wie nötig.
Lass Dir einfach mal das errechnete date ausgeben und schau selbst.
if(date("Y-m-d",strtotime($laufdatum." -".($tag++)." days"))==$array[$i]){
$laufdatum=$array[$i];
}else{
$start=$i+1;
break;
}
}
Ich kann kein PHP, nehme aber mal an, daß Dir dies eher hilft:
[code lang=php]
$start="";
$tag=0;
for( $i=$pos-1; $i>=0; $i--) {
if( date("Y-m-d",strtotime($gesuchtedatum." +".(--$tag)." days"))==$array[$i]){
$start=$i;
}
else {
break;
}
}
Nebenbei: Wenn Dein Array groß ist, aber sortiert, dann solte Dir für die erste Schleife eine binäre suche schneller einen Treffer finden.
Wenn Du aber lieber, wie jetzt, linear suchst, dann kannst Du das $start auch gleich bei der Suche nach dem gewünschten Datum finden. Einfach zusätzlich schauen, ob die Differenz vom Datum im aktuellen Element um mehr als 1 vom vorherigen abweicht und in dem Fall $start auf den aktuellen Index setzen.
-- Skeeve