2017-11-13 2 views
0

I-Skript, das zwei Variablen aus CSV liest und jene Variable war in Spalte 0 und Spalte 5 und es war in Ordnung:Ändern PHP-Skript von CSV zu lesen Datei

$file = fopen($qtyfile,"r"); 
output("reading file $qtyfile"); 

$i=0; 
$imported = 0; 
$failed = 0; 
while(! feof($file)) 
{ 
    $i++; 

    $line = (fgetcsv($file)); 

    if($i==1) continue; 

    $cols = explode(';',$line[0]); 


    $pcode = $cols[0]; 
    $stock = $cols[5];     

Die CSV-Datei wurde orginzed in unterschiedliche Art und Weise und die Variable nun in Spalte 16 & 19 ich habe versucht, den Code der folgenden zu ändern, aber es funktioniert nicht:

$file = fopen($qtyfile,"r"); 
output("reading file $qtyfile"); 

$i=0; 
$imported = 0; 
$failed = 0; 
while(! feof($file)) 
{ 
    $i++; 

    $line = (fgetcsv($file)); 

    if($i==1) continue; 

    $cols = explode(';',$line[0]); 


    $pcode = $cols[16]; 
    $stock = $cols[19];     

kann Ihnen helfen, bitte das Skript bereit, von neuen Spalte zu machen.

jede Hilfe wird geschätzt.

Link to full script and the csv:

+1

Zeigen Sie uns ein Beispiel der CSV-Datei. –

+1

Welchen Fehler bekommen Sie? Bitte posten Sie die Fehlermeldung. Wenn es keinen Fehler gibt, sind es die falschen Daten? Möglicherweise die falschen Kol-Indizes? Wir können nicht ohne eine CSV-Probe und mehr Informationen über das Problem sagen. –

+0

Wie funktioniert es nicht? Gibt es einen Fehler? Liest es die falschen Daten? – SourceOverflow

Antwort

1

Hier ist eine super kleine Funktion, die mit Spaltenüberschriften von Zeile 1 als Array-Schlüssel jede CSV-Datei in eine assoziative Array parsen wird.

function csvArray($file) { 
    $csv = array_map('str_getcsv', file($file)); 
    array_walk($csv, function(&$a) use ($csv) { 
     $a = array_combine($csv[0], $a); 
    }); 
    array_shift($csv); 
return $csv; 
} 

Verbrauch:

$output = csvArray($file); 
foreach ($output as $o) { 
echo $o['pcode']; 
// whatever 
} 

Ich habe mit ziemlich vielen csv-Dateien umgehen und ich verwende das die ganze Zeit. Sobald sich die Daten in einem Array befinden, ist es viel einfacher, mit ihnen umzugehen, und es spielt keine Rolle, ob Spalten so lange verschoben werden, wie der Name gleich bleibt, damit der Code nicht beschädigt wird.