Erstes Element in einer while-Schleife?
-
28-09-2019 - |
Frage
Ich schreibe ein PHP-Skript, dass die Einfuhren eine csv und Einfügungen in eine Tabelle, aber ich brauche die erste Reihe zu bekommen, so dass ich das Feld names..here ist haben kann meine csv
id artist song
11 NewBee great stuff
10 anotherNewbee even better
6 NewArtist New song
Wie Sie die erste Zeile sehen kann, ist der Name der Felder, die ich brauche. hier ist meine Schleife
$handle = fopen('csvs/'.$_FILES["csv"]["name"], 'r');
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
print_r($data);
//do something with it but i need the first time around
array(3) { [0]=> string(2) "id" [1]=> string(6) "artist" [2]=> string(4) "song" }
array(3) { [0]=> string(2) "11" [1]=> string(6) "NewBee" [2]=> string(1) "great stuff" }
array(3) { [0]=> string(2) "10" [1]=> string(13) "anotherNewbee" [2]=> string(1) "even better"}
Wie kann ich die erste bekommen und sie in Variablen setzen und die Schleife der Daten, diese Felder in einer INSERT-Anweisung mit
weiterLösung
würde diese Arbeit für Sie?
$row = 1;
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
if($row == 1) {
// do something
}
else
{
// do something
}
++$row;
}
Andere Tipps
Vor Ihrem während des Block, führen Sie einfach die fgetcsv Funktion ein einziges Mal und speichert die Feldüberschriften.
Entweder deepsat oder die mattmoon9 Methode wird gut funktionieren. Hier ist, was mattmoon9 Antwort würde wie in Code strukturiert aussehen (auch basierend auf meinen Kommentar zu der Antwort):
$handle = fopen('csvs/'.$_FILES["csv"]["name"], 'r');
if (($columns = fgetcsv($handle, 1000, ',')) !== false) {
while (($data = fgetcsv($handle, 1000, ',')) !== false) {
// Process data
}
// Insert into database using $columns as table column names
} else {
// The file couldn't be parsed as CSV
}