2016-07-20 35 views
1

我想添加一个值(!未覆盖)到一个txt文件,增加值file_put_contents如何txt文件用PHP

这是我到目前为止有:

$fileUserId = fopen("fileUserId.txt", "w") or die("Unable to open file!"); 
$UserIdtxt = $UserID."||"; 
file_put_contents("fileUserId.txt", $UserIdtxt, FILE_APPEND); 
fclose($fileUserId); 

$UserID是的整数,如1,2,3等

因此,当用户ID为1,则fileUserId.txt看起来像这样:

1||

当有ID为2, 的fileUserId.txt其他用户应该是这样的:

1||2||

但他覆盖该文件,因此它变成这样:

2||

我做错了什么?

回答

5

删除fopenfclose行,你很好。 file_put_contents在内部执行此操作。并且fopen("fileUserId.txt", "w")清除该文件。

注:

'W' 写入方式打开;将文件指针放在文件的起始位置 ,并将文件截断为零。如果文件不存在 ,请尝试创建它。

+0

那么这工作正常。现在发生的唯一事情是:他在它们之间放置一个'0';所以这是** fileUserId.txt的内容**'1 || 0 || 63 || 0 || 24 ||' –

+0

@JackMaessen Plus;最后一个'||'没有必要,因为'24'后面没有任何值....检查下面的替代方法...但是,您应该接受这个解决方案...也许它提供了一个替代方案... – Poiz

+0

'1 || 0 || 63 || 0 || 24 ||'这就是你正在使用的代码的另一个问题。 – JustOnUnderMillions

1

你可以做得不同。下面的评论代码说明如何:

<?php 

    $txtFile = __DIR__ . "/fileUserId.txt"; 
    $UserID  = 9; //<== THIS VALUE IS FOR TESTING PURPOSES, 
        //<== YOU SHOULD HAVE ACCESS TO THE ORIGINAL $UserID; 

    //CHECK THAT THE FILE EXISTS AT ALL 
    if(file_exists($txtFile)){ 
     // GET THE CONTENTS OF THE FILE... & STORE IT AS A STRING IN A VARIABLE 
     $fileData  = file_get_contents($txtFile); 

     // SPLIT THE ENTRIES BY THE DELIMITER (||) 
     $arrEntries  = preg_split("#\|\|#", $fileData); 

     // ADD THE CURRENT $UserID TO THE $arrEntries ARRAY 
     $arrEntries[] = $UserID; 

     // RE-CONVERT THE ARRAY TO A STRING... 
     $strData  = implode("||", $arrEntries); 

     // SAVE THE TEXT FILE BACK AGAIN... 
     file_put_contents($txtFile, $strData); 
    }else{ 
     // IF FILE DOES NOT EXIST ALREADY, SIMPLY CREATE IT 
     // AND ADD THE CURRENT $UserID AS THE FIRST ENTRY... 
     file_put_contents($txtFile, $UserID); 
    } 
+0

那样:到罗马的观光方法! ;) – JustOnUnderMillions

+0

@JustOnUnderMillions ;-)不! **通往你的家庭!!! ** ;-) – Poiz