Tom: Differenz zum nächsten Element berechnen

Beitrag lesen

Hello,

<?php

$DTN = array(
    '02.09.2006' => array(20.00, 'Starterset'),
    '16.10.2006' => array(15.00, '602067'),
    '29.11.2006' => array(15.00, '733139'),
    '17.01.2007' => array(15.00, '953110'),
    '24.02.2007' => array(15.00, '1146021'),
    '12.03.2007' => array(15.00, '1233024'),
    '07.05.2007' => array(15.00, '1564098'),
    '06.07.2007' => array(15.00, '2010120'),
    '01.10.2007' => array(15.00, '2760485'));
?>


> Selbiges soll in einer Tabelle angezeigt und dabei auch der Abstand zum nächsten Element in Tagen ausgegeben werden. Das mit der Anzeige klappt bestens in einer foreach-Schleife und das Berechnen der Tage ist eigentlich auch kein Problem, nur eben nicht schon in der Zeile davor:  
  

> +------------+--------+----------+------+  
> | Datum      | Betrag | Re.-Nr.  | Tage |  
> +------------+--------+----------+------+  
> | 02.09.2006 |  20,00 | Startset |   44 |  
> | 16.10.2006 |  15,00 |   602067 |   44 |  
> | 29.11.2006 |  15,00 |   733139 |   48 |  
> | 17.01.2007 |  15,00 |   953110 |   39 |  
> | 24.02.2007 |  15,00 |  1146021 |   16 |  
> | 12.03.2007 |  15,00 |  1233024 |   55 |  
> | 07.05.2007 |  15,00 |  1564098 |   60 |  
> | 06.07.2007 |  15,00 |  2010120 |   87 |  
> | 01.10.2007 |  15,00 |  2760485 |      |  
> +------------+--------+----------+------+  
> Also: Wie greift man auf den Key des nächsten SubArrays zu ?  
  
Also erstens sehe ich da kein Echtzeitproblem. Du könntest also in aller Seelenruhe die Berechnung durchführen und dann später die Ausgabe. Das bendeutet, dass Du ein Arrayelement hinzufügen könntest für die Differenz.  
  
Und zweitens sollte die Frage doch dann besser heißen: wie greift man nochmals auf den Key des letzten Elementes zu, obwohl man schon beim nächsten ist? Wie wäre es denn, sich den Key einfach zu merken?  
  
~~~php
  
$_buchung = array()  
$_buchung[$tag] = array();  
$_buchung[$tag]['betrag']= 20;  
$_buchung[$tag]['renr']= 'Startset';  
$_buchung[$tag]['diff']= 0;  
  
  
$oldtag = 0;  
  
foreach($_buchung as $tag => $_data)  
{  
    if (isset($_buchung[$oldtag]))  
    {  
        $_buchung[$oldtag]['diff'] = daydiff($oldtag, $tag);  
    }  
  
    ## hier zur Not die Ausgaben veranlassen  
  
  
    $oldtag = $tag;  
}  

daydiff() ist Deine Funktion für die Berechnung der Tagesdifferenz.  Da war ich eben zu faul nachzudenken, wie das geht :-)

Ein harzliches Glückauf

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de