by Guest » 27 Dec 2024, 10:10
Ich versuche, Daten aus Tabellenkalkulationen zu extrahieren, die uns ein Kunde geschickt hat, damit wir diese Daten in unserem System speichern können. Leider sind die Tabellenkalkulationen nicht konsistent, es wurden Spalten hinzugefügt und entfernt, was es schwierig machte, ein einziges Skript zum Extrahieren und Speichern der Daten zu erstellen. Positiv ist, dass sie für jede Spalte in der Tabelle dieselben Titel verwenden.
Mein Plan bestand darin, die erste Zeile mit ihren Titeln zu verarbeiten und die Spaltenanzahl mit der Spalte unserer Datenbank zu verknüpfen Name. Ich speichere es derzeit als zugehöriges Array. Im folgenden Codebeispiel wurden der Kürze halber einige case-Werte entfernt. Das assoziative Array hat die Spaltenanzahl als Schlüssel, den Namen als Wert.
Code: Select all
if (($handle = fopen($guestData, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE) {
$num = count($data);
$myArray = array();
for ($c=0; $c < $num; $c++) {
switch ($data[$c]) {
case 'Customer ID':
$myArray += [$c => "operatorBookingID"];
break;
case 'Customer Name':
$myArray += [$c => "guestName"];
break;
case 'Country':
$myArray += [$c => "nationality"];
break;
case 'Phone number':
$myArray += [$c => "phone"];
break;
'
'
'
}
}
}
Mein erstes Problem ist, dass der erste Fall aus irgendeinem Grund nicht registriert und nicht zum Array hinzugefügt wird, obwohl er die richtige Zeichenfolge hat. Die Kundennummer ist immer die erste Spalte der Tabellen, die wir erhalten. Ich schließe mit einem Array ab, das so beginnt:
Code: Select all
Array ( [3] => guestName [4] => nationality [5] => phone etc etc )
Die Tabelle besteht aus einfachen, durch Kommas getrennten Dateien mit doppelten Anführungszeichen um alle Daten, die Kommas enthalten.
bearbeitet
Das vorherige Fehlerproblem wurde dank des zweiten Kommentars über das zu frühe Schließen des Streams durch das Skript behoben.
Ich versuche, Daten aus Tabellenkalkulationen zu extrahieren, die uns ein Kunde geschickt hat, damit wir diese Daten in unserem System speichern können. Leider sind die Tabellenkalkulationen nicht konsistent, es wurden Spalten hinzugefügt und entfernt, was es schwierig machte, ein einziges Skript zum Extrahieren und Speichern der Daten zu erstellen. Positiv ist, dass sie für jede Spalte in der Tabelle dieselben Titel verwenden.
Mein Plan bestand darin, die erste Zeile mit ihren Titeln zu verarbeiten und die Spaltenanzahl mit der Spalte unserer Datenbank zu verknüpfen Name. Ich speichere es derzeit als zugehöriges Array. Im folgenden Codebeispiel wurden der Kürze halber einige case-Werte entfernt. Das assoziative Array hat die Spaltenanzahl als Schlüssel, den Namen als Wert.
[code]if (($handle = fopen($guestData, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE) {
$num = count($data);
$myArray = array();
for ($c=0; $c < $num; $c++) {
switch ($data[$c]) {
case 'Customer ID':
$myArray += [$c => "operatorBookingID"];
break;
case 'Customer Name':
$myArray += [$c => "guestName"];
break;
case 'Country':
$myArray += [$c => "nationality"];
break;
case 'Phone number':
$myArray += [$c => "phone"];
break;
'
'
'
}
}
}
[/code]
Mein erstes Problem ist, dass der erste Fall aus irgendeinem Grund nicht registriert und nicht zum Array hinzugefügt wird, obwohl er die richtige Zeichenfolge hat. Die Kundennummer ist immer die erste Spalte der Tabellen, die wir erhalten. Ich schließe mit einem Array ab, das so beginnt:
[code] Array ( [3] => guestName [4] => nationality [5] => phone etc etc )
[/code]
Die Tabelle besteht aus einfachen, durch Kommas getrennten Dateien mit doppelten Anführungszeichen um alle Daten, die Kommas enthalten.
bearbeitet
Das vorherige Fehlerproblem wurde dank des zweiten Kommentars über das zu frühe Schließen des Streams durch das Skript behoben.