2015-06-28 33 views
0

我有一個文件寫入的代碼..數據在控制器中正確得到。 但代碼工作在for循環.. 迭代是好的。 DISPLY所有控制器 的數據來創建一個文件log_date.txt,但只寫了最後的數據是我的問題..如何避免在使用codeigniter的文件寫入中的覆蓋

$file_path='./application/assets/login/log_'.date'.txt',$data); 
if(file_exists($file_path)) 
{ 
    write_file(APPPATH'/assets/login/log_'.$todate.'.txt', $data); 
} 
else 
{ 
    write_file(APPATH'./assets/login/log_'.$todate.'.txt', $data); 
} 
+0

如果循環兩種工作然後生成兩組數據..bt最後的數據寫入文件 – robins

回答

0

我想,如果文件存在,那麼你想將數據追加到它。否則,你想創建一個文件並將數據添加到正確的位置?如果這是您的擔憂,那麼可以使用write_file函數中的可選第3個參數更改文件寫入模式。默認情況下,它覆蓋文件的位置爲 wb。但是,使用a方法,您可以將新行添加到文件而不覆蓋它。

$file_path = APPPATH . "/assets/login/log_.$todate.txt"; 
if(file_exists($file_path)) 
{ 
    write_file($file_path, $data, 'a'); 
} 
else 
{ 
    write_file($file_path, $data); 
} 

更妙的是,你可以做你想做的,而不控制語句作爲a模式首先檢查文件是否存在與否,然後創建它,否則它只是附加的數據。所以如果沒有控制語句,下面的部分就足夠了。

$file_path = APPPATH . "/assets/login/log_.$todate.txt"; 
write_file($file_path, $data, 'a'); 

編輯:

要當你在一個循環中運行一個新的行內添加的每個數據,添加新行$data

$file_path = APPPATH . "/assets/login/log_.$todate.txt"; 
write_file($file_path, $data . "\r\n", 'a'); 
+0

非常感謝你 – robins

+0

,但它追加在同一行......我想在每個迭代中的數據在單獨的行 – robins

+0

我想我誤解了你,可以說你一直追加相同的數據,並讓它成爲「asd」,第二次循環後,它是否在同一行上追加2x,使得「asdasd」或你的意思是它只是覆蓋最後一行asd?如果你想添加一個新行,只需在你的'$ data'中加'\ n'。就像:'$ data。=「\ n」' – Burak