2015-08-16 2 views
0

Допустим, у нас есть файл, открытый с помощью fopen. Можно ли писать в ту же строку, о которой мы читаем?Напишите строку, которую мы читаем из (PHP)

В основном im работает с файлами csv, и мне нужно писать значения в строки, которые не имеют второго или первого значения. (пример1; пример2)

Спасибо.

+1

Возможный дубликат [Как записать значения массива в файл csv в PHP?] (Http://stackoverflow.com/questions/4290693/how-to-write-array-values-into-a-csv-file- in-php) – eliasah

+0

нет. im не работает с массивами. У меня есть файл csv, некоторые строки имеют первое значение, некоторые - нет. если он не имеет первого значения, мне нужно что-то написать в этой строке, как первое значение. –

ответ

0

Пример CSV:

Sally Whittaker,2018,McCarren House,312,3.75 
Cushing House,148,3.52 
Prescott House,17-D,3.20 
Sandy Allen,2019,Oliver House,108,3.48 

Вторая и третья линия - первые два элемента отсутствует. Код:

$file=file("csv.csv"); 

$str=''; 
foreach ($file as $line) { 


    $liner=explode(',',$line);//use your own separator 
    if(count($liner)<5) { 

     array_unshift($liner, 'item1','item2');//put items at the start 
     $str.= implode(',', $liner); 

    } 
    else { 
     $str.=implode(',', $liner); 
    } 
} 

file_put_contents('csv.csv', $str); 

Выход CSV:

Sally Whittaker,2018,McCarren House,312,3.75 
item1,item2,Cushing House,148,3.52 
item1,item2,Prescott House,17-D,3.20 
Sandy Allen,2019,Oliver House,108,3.48 

EDIT: если CSV (возможно), имеют такую ​​структуру:

Sally Whittaker,2018,McCarren House,312,3.75 
,ddd,Cushing House,148,3.52 
,xxxx,Prescott House,17-D,3.20 
Sandy Allen,2019,Oliver House,108,3.48 

код может быть:

$file=file("csv.csv"); 

$str=''; 
foreach ($file as $line) { 


    $liner=explode(',',$line); 
    if($liner[0]=='') { //check if first item is empty! 
     $liner[0]='item'; 

    } 
    $str.=implode(',', $liner); 
} 

file_put_contents('csv.csv', $str); 
+1

Хороший ответ, однако, @molnarpw помните, что выполнение этого более 500 000 строк CSV-файла может закончиться с нехваткой памяти. Файл сначала считывается в памяти, а позже измененные данные записываются снова. – mark

+0

@mark, да, вы правы. Надеюсь, что .csv не такой огромный. :) – sinisake

Смежные вопросы