遍历 CSV 文件并在 lap 时跳过?

Iterate over a CSV file and skip while lap?

提问人:Jan 提问时间:2/24/2017 最后编辑:Jan 更新时间:2/24/2017 访问量:35

问:

我想遍历一个 CSV 文件并检查位置行 [1] 上是否有某些国家/地区。如果是,则应将 while 圈跳到下一行。

但目前由于我的 if 条件,它失败了:

$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) ...     
}

为了继续编码,我正在检查我的陈述是否正确以及是否获得了所需的值。但我没有。

我只想获取国家/地区不是数组中的国家/地区之一的值,并且标题是否包含单词 .但是如果我使用这个 if 条件,我没有得到任何值。 但有什么问题呢?row[1]card

下面是一个 CSV 示例:

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";

所以实际上我应该得到和.但我不..."PlayStation Network Card 20€";"Deutschland ";"Playstation Plus Live Card - 365 Tage";Deutschland;

有谁知道为什么,如果是,我该如何解决这个问题?

我的第二个问题是: 如果一个值与我的数组中的一个国家/地区匹配,则应跳过实际的 while lap,因为如果产品来自这些国家/地区,我不想处理该产品。但是我怎么知道实际的圈数呢?products_edition

我不想停止 while 循环的孔,只有 while lap 与我的国家/地区数组中的一个国家/地区匹配。row[1]

有人有想法吗? 问候和谢谢!

编辑:我现在知道如何跳过实际的循环圈,并告诉循环继续下一圈。我只是用.但是还有我的其他条件问题...... :/continue;

PHP 数组 csv if 语句 逻辑

评论


答:

1赞 beta-developper 2/24/2017 #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) ...     
}