2017-02-23 5 views
0

Ich möchte über eine CSV-Datei iterieren und prüfen, ob in der Positionszeile [1] bestimmte Länder sind. Wenn ja, sollte die While-Runde zur nächsten Reihe übersprungen werden.Iterieren über eine CSV-Datei und überspringen während der Runde?

Aber im Moment versagt es meint, wenn die Bedingung durch:

$countries = array("Österreich", "Schweiz", "Niederlande", "Großbritannien", "United States"); 

while (($row = fgetcsv($inputFile, 0, $delimiter)) !== false) { 
     foreach ($countries as $country){ 
      if(((stripos($row[1], $country === false))) && stripos($row[0], "Card")){ 
       echo $row[0] . "\t => \t" . $row[1] . "\n"; 
      } 
     } 
... some other code (Dealing with the values) ...  
} 

Codierung fortzusetzen ich überprüfen, ob meine Aussage richtig ist, und wenn ich die gewünschten Werte zu bekommen. Aber ich mache nicht.

Ich möchte nur die Werte erhalten, wo das Land nicht eines der Länder in dem Array ist und wenn der Titel in row[1] das Wort card enthält. Aber wenn ich diese wenn Bedingung verwende, bekomme ich keine Werte. Aber was ist los?

Dies ist ein CSV Beispiel:

products_name;products_edition 
"PlayStation Network Card 20€";"Deutschland "; 
"PlayStation Network Card 50€";Österreich; 
"Playstation Plus Live Card - 365 Tage";Deutschland; 
"PlayStation Network Card 10£ ";Großbritannien; 
"PlayStation Network Card 20$";"United States"; 

So tatsächlichen ich soll "PlayStation Network Card 20€";"Deutschland "; und "Playstation Plus Live Card - 365 Tage";Deutschland; bekommen. Aber ich nicht ...

Weiß jemand warum und wenn ja wie kann ich das beheben?

Und meine zweite Frage lautet: Wenn ein Wert von products_edition mit einem Land von meinem Array übereinstimmt, sollte die tatsächlichen während Runde übersprungen, weil ich will, um das Produkt nicht handhaben, wenn es aus diesen Ländern ist. Aber wie kann ich das eigentlich während der Runde sagen?

Ich möchte nicht das Loch While-Schleife stoppen, nur die Weile Runde, wo row[1] entspricht eines der Länder in meinem Land-Array.

Hat jemand eine Idee? Grüße und Danke!

EDIT: Ich weiß jetzt, wie man die tatsächliche Schleifenrunde überspringt und der Schleife sagt, um mit der nächsten Runde fortzufahren. Ich benutze einfach continue;. Aber da ist noch mein anderes if-Bedingungsproblem ...:

Antwort

1
$countries = array("Österreich", "Schweiz", "Niederlande", "Großbritannien", "United States"); 
while (($row = fgetcsv($inputFile, 0, $delimiter)) !== false) { 
    if (in_array($row[1], $countries) && strpos($row['1'], "Card") !== false) { 
     continue; 
    } 
    echo $row[0] . "\t => \t" . $row[1] . "\n"; 
//... some other code (Dealing with the values) ...  
} 
+0

Vielen Dank! – Jan

Verwandte Themen