2010-08-12 2 views

답변

0

여기 있습니다. 완전한 작업 코드 :

<?php 
//A helping function to insert data at any position in array. 
function array_insert($array, $pos, $val) 
{ 
    $array2 = array_splice($array, $pos); 
    $array[] = $val; 
    $array = array_merge($array, $array2); 

    return $array; 
} 

//What and where you want to insert 
$DataToInsert = '11,Shamit,Male'; 
$PositionToInsert = 3; 

//Full path & Name of the CSV File 
$FileName = 'data.csv'; 

//Read the file and get is as a array of lines. 
$arrLines = file($FileName); 

//Insert data into this array. 
$Result = array_insert($arrLines, $PositionToInsert, $DataToInsert); 

//Convert result array to string. 
$ResultStr = implode("\n", $Result); 

//Write to the file. 
file_put_contents($FileName, $ResultStr); 
?> 
3

없음에

덕분에, 그것은 자연을 파일 ​​시스템에 의한 파일의 중간에 새로운 데이터를 삽입 할 수 아니다.
끝에 추가 만 가능합니다.

유일한 해결책은 다른 파일을 만들고, 소스의 시작 부분을 작성하고, 새 값을 추가 한 다음 나머지 소스 파일을 추가하는 것입니다. 마지막으로 결과 파일의 이름을 원래 이름으로 바꿉니다.

+0

이 문제에 대한 다른 해결책 –

+0

@Ankur 귀하의 질문에 대한 답변을 추가했습니다. –

0

기술적으로 Col. Shrapnel's answer은 옳습니다.

문제는 일부 데이터를 변경하기 위해 이러한 파일 작업을 모두 처리하고 싶지 않다는 것입니다. 나는 너에게 동의한다. 그러나 당신은 잘못된 수준의 해결책을 찾고 있습니다. 이 문제를 더 높은 수준으로 놓으십시오. CSV 데이터베이스에서 엔터티를 나타내는 모델을 만듭니다. 모델의 상태를 수정하고 save() 메서드를 호출하십시오. 이 메서드는 모델의 상태를 CSV 형식으로 쓰도록해야합니다.

그래도 저수준 작업을 추상화하는 CSV 라이브러리를 사용할 수 있습니다. 예를 들어 parsecsv-for-php을 사용하면 특정 셀을 타겟팅 할 수 있습니다.

$csv = new parseCSV(); 
$csv->sort_by = 'id'; 
$csv->parse('data.csv'); 
# "4" is the value of the "id" column of the CSV row 
$csv->data[4]['firstname'] = 'John'; 
$csv->save(); 
관련 문제