Erstes Array-Element doppelt - warum?

08/08/2014 - 16:16 von Stephan Elinghaus | Report spam
Grüß Gott,

ich habe hier ein Problem und finde die Ursache nicht.

Die folgende Funktion soll Werte aus einer csv-Datei einlesen und in
ein Array packen, und zwar eins, bei dem das Datum (der erste Wert der
csv-Datei) ein Schlüssel im Array wird. Jeder Schlüssel soll nur ein
Mal vorkommen. Bei mehreren Datumseintràgen mit demselben Datum sollen
die Eintràge alle unter dem einen Datum zusammengefaßt werden.
Die csv-Datei ist richtig formatiert und enthàlt keine Leerzeilen.


Konkretes Beispiel:
Der Anfang der csv-Datei sieht z.B. so aus (Datum;Uhrzeit;Wert):
21.07.2014;13:22;102
21.07.2014;15:31;99
21.07.2014;16:18;122
22.07.2014;06:07;82
22.07.2014;12:45;152
22.07.2014;13:12;172
.
.
.


Und diese Funktion erzeugt aus der csv-Datei $file das Array $datensaetze:

private function make_daten($file)
{
$x=0;
$datensaetze=array();
$filepath=dirname(__FILE__)."/".$file;
$csvvalues=file($filepath);
foreach($csvvalues as $zeile=>$inhalt)
{
$parts=explode(";",$inhalt);
$datum=trim($parts[0]);
$zeit=trim($parts[1]);
$wert=intval($parts[2]);
if(!array_key_exists($datum,$datensaetze))
{
$datensaetze[$datum]=array();
}
$datensatz=array("nummer"=>$x,"zeit"=>$zeit,"wert"=>$wert);
array_push($datensaetze[$datum],$datensatz);
$x++;
}
print_r($datensaetze);
}


Der Anfang des Ergebnisarrays $datensaetze sieht so aus:

Array
(
[21.07.2014] => Array
(
[0] => Array
(
[nummer] => 0
[zeit] => 13:22
[wert] => 102
)
)

[21.07.2014] => Array
(
[0] => Array
(
[nummer] => 1
[zeit] => 15:31
[wert] => 99
)

[1] => Array
(
[nummer] => 2
[zeit] => 16:18
[wert] => 122
)
)

[22.07.2014] => Array
(
[0] => Array
(
[nummer] => 3
[zeit] => 06:07
[wert] => 82
)

[1] => Array
(
[nummer] => 4
[zeit] => 12:45
[wert] => 152
)
.
.
.
.

Der erste Eintrag der csv-Datei erzeugt immer einen doppelten Schlüssel,
im Beispiel zwei Mal [21.07.2014], wobei der erste Eintrag immer nur
einen Eintrag enthàlt.
Bei allen anderen nachfolgenden Eintràgen paßt alles. Egal welche Zeile die
erste in der csv-Datei ist.

Getestet mit PHP 5.4.4-14+deb7u12

Wie bekomme ich die den ersten Eintrag hin, ohne daß der Schlüssel
doppelt vergeben wird?

[Ich bin keine Signatur, ich mache hier nur sauber]
 

Lesen sie die antworten

#1 Christoph M. Becker
08/08/2014 - 18:51 | Warnen spam
Stephan Elinghaus schrieb:

Der Anfang des Ergebnisarrays $datensaetze sieht so aus:

Array
(
[21.07.2014] => Array
(
[0] => Array
(
[nummer] => 0
[zeit] => 13:22
[wert] => 102
)
)

[21.07.2014] => Array
(



Das kann eigentlich nicht sein, denn dann gàbe es ja den selben Key
zweimal. Hast Du mal mit der Ausgabe von var_dump() verglichen?

Christoph M. Becker

Ähnliche fragen