PHP - Update specific row in CSV file

前端 未结 4 851
予麋鹿
予麋鹿 2021-01-05 08:03

Is there an effective way to update/delete specific row in CSV file? Every other method included reading contents of entire file, creating temporary file and then replacing

4条回答
  •  执笔经年
    2021-01-05 08:43

    Consider reading the csv line by line into a multi-dimensional array, and at a certain row make your changes. Then, export array data out to csv. Below example modifies the 100th row assuming a 6-column comma delimited csv file (0-5).

    Now, if you want to delete the row, then exclude it from $newdata array by conditionally skipping to next loop iteration with continue. Alternatively, if you want to update, simple set current inner array $newdata[$i] to new values:

    $i = 0;
    $newdata = [];
    $handle = fopen("OldFile.csv", "r");
    
    // READ CSV
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {      
    
        // UPDATE 100TH ROW DATA (TO EXCLUDE, KEEP ONLY $i++ AND continue)
        if ($i == 99) {
            $newdata[$i][] = somenewvalue;          
            $newdata[$i][] = somenewvalue;   
            $newdata[$i][] = somenewvalue;  
            $newdata[$i][] = somenewvalue;
            $newdata[$i][] = somenewvalue;
            $newdata[$i][] = somenewvalue;
            $i++;
            continue;
        }  
        $newdata[$i][] = $data[0];          
        $newdata[$i][] = $data[1];    
        $newdata[$i][] = $data[2];      
        $newdata[$i][] = $data[3];    
        $newdata[$i][] = $data[4];    
        $newdata[$i][] = $data[5];
        $i++;    
    }
    
    // EXPORT CSV
    $fp = fopen('NewFile.csv', 'w');    
    foreach ($newdata as $rows) {
        fputcsv($fp, $rows);
    }    
    fclose($fp);
    

提交回复
热议问题