2016-06-30 9 views
0

Я пытаюсь воссоздать файл csv на другом исходном файле csv. Я пытаюсь пропустить всю строку, когда эта строка имеет определенное слово «WORDO». На данный момент я могу только заменить данные с WORDO на пустую строку (""). Однако я хотел бы пропустить всю строку, когда найдено совпадение. Пока массив $ keepColumns до сих пор хранит данные [1] (пустой, или нет), я хотел бы, чтобы пропустить весь ряд, когда «Wordo» внутри $ данных [1]Чтение PHP csv и использование fputcsv: как я могу пропустить всю строку с условием if

<?php 

$finalArray = array(); 
$newFinalData = "new_csv.csv"; 

if (($finalData = fopen("mycsv.csv", "r")) !== FALSE) 
    { 

    $newfile = fopen($newFinalData, 'w'); 

    while (($data = fgetcsv($finalData, 999999, ",",'"')) !== FALSE) 
     { 

     //If the 1st column has WORDO as text, ideally skip the whole row 
     if(substr($data[1], 0, 5) === "WORDO") { 
      $data[1] = ""; 
     } 

     $keepColumns = array(

      $data[0], 
      $data[1], 
      $data[2], 
      $data[5] 

     ); 

     fputcsv($newfile, $keepColumns, ";",'"'); 
     } 
    fclose($finalData); 
    fclose($newfile); 
    } 


?> 
+3

Используйте слово 'продолжать;' – Farkie

ответ

2

Вы должны использовать ключевое слово continue в буквальном смысле перейти к следующей итерации:

 if(substr($data[1], 0, 5) === "WORDO") { 
      $data[1] = ""; 
      continue; 
     } 
+1

Кстати, '$ данных [1] =«»;' становится неуместным, если вы только собираетесь продолжать. –

+0

И я бы, вероятно, использовал 'if (strpos ($ data [1]," WORDO ") === 0)' – AbraCadaver

+0

Он может использовать его позже, вы никогда не знаете. – Farkie