2016-08-29 8 views
1

私はPHPでループしているCSV(下に添付)を持っています。注:Peterの項目にはExtensionという番号がありません。変数whileループが空の場合PHPを中断する

私はループを切断するにはどうすればよい任意の$セル(Extensionのような)が空の場合

<?php 
echo "<html><body><table>\n\n"; 
$f = fopen("users.csv", "r"); 
while (($line = fgetcsv($f)) !== false) { 
     echo "<tr>"; 
     foreach ($line as $cell) { 
       echo "<td>" . htmlspecialchars($cell) . "</td>"; 
     } 
     echo "</tr>\n"; 
} 
fclose($f); 
echo "\n</table></body></html>"; 

Forename,Surname,Extension 
Jim,Carey,1973 
Peter,Robertson, 
+2

'if(empty($ cell)){break; } ' –

+1

あなたの質問にあなた自身の質問に答えてください:break –

+0

@u_mulderこれはどこに行けばいいか教えていただけますか?私は 'foreach'ループの直後に追加しようとしましたが、成功しません。空白でも行を出力します。 – michaelmcgurk

答えて

3

これを使用してみてください -

<?php 
echo "<html><body><table>\n\n"; 
$f = fopen("users.csv", "r"); 
while (($line = fgetcsv($f)) !== false) { 
    $row = "<tr>"; 
    $is_empty = false; 
    foreach ($line as $cell) { 
     if ($cell !== '') { 
      $row .= "<td>" . htmlspecialchars($cell) . "</td>"; 
     } else { 
      $is_empty = true; 
     } 
    } 
    $row .= "</tr>\n"; 
    if ($is_empty) { 
     continue; 
    } else { 
     echo $row; 
    } 
} 
fclose($f); 
echo "\n</table></body></html>"; 
?> 

このソリューションは、印刷されますすべてのフィールドに値がある場合にのみ行を返します。ループを中断したい場合は、continueの代わりにbreakを使用できます。

関連する問題