继续一个 PHP While 循环,而不是打破它

Nyx*_*nyx 0 php csv

while 循环用于读取 CSV 文件中除第一行之外的每一行。但是,当使用该if语句忽略第一行时,不会读取任何行。删除该if语句允许它按预期读取所有行。为什么是这样?

$rowNumber = 1;

// Load CSV into array
$inputFileName = '/var/www/site/data.csv';
$file = fopen($inputFileName, 'r');

while (($row = fgetcsv($file)) !== FALSE) {
    // Ignore row #1 (headers)
    if($rowNumber == 1)
        continue;

    doSomeWork();

    // Increment row number
    $rowNumber++;
}
fclose($file);

echo 'Loaded: ' . $rowNumber . ' rows';
Run Code Online (Sandbox Code Playgroud)

Han*_*nky 5

你不需要continue那里。尝试

$rowNumber = 1;

// Load CSV into array
$inputFileName = '/var/www/site/data.csv';
$file = fopen($inputFileName, 'r');

while (($row = fgetcsv($file)) !== FALSE) {
    // Ignore row #1 (headers)
    if($rowNumber != 1)
    {
    doSomeWork();
    }

    // Increment row number
    $rowNumber++;
}
fclose($file);

echo 'Loaded: ' . $rowNumber . ' rows';
Run Code Online (Sandbox Code Playgroud)

编辑

只是为了解释为什么您continue没有按预期工作。PHP手册说

continue 在循环结构中用于跳过当前循环迭代的其余部分,并在条件评估和下一次迭代开始时继续执行。

这意味着当你的 continue 被调用时,你的语句$rowNumber++;也会被跳过,这意味着你$rowNumber总是保持 1,因此所有的行都被跳过:)