全球主机交流论坛

标题: 求PHP大佬指点一下代码 [打印本页]

作者: 乌鸦    时间: 2019-9-4 17:02
标题: 求PHP大佬指点一下代码
目录 txt

里面有文件 : 1.txt 2.txt 3.txt  ....... 100.txt

现在想将txt目录里 1- 100 这100个文件按照顺序合并成1个101.txt,请问要怎么实现?

是要按编号顺序.



仅仅百度到了一段有用的代码,其他都是遍历目录合并,而且全部是抄来抄去的文章:

  1. <?
  2. $data="";
  3. for ($i=1;$i<=100;$i++) {
  4. $dir=$i.".txt";
  5. $data = $data.file_get_contents($dir)."\r";
  6. }
  7. $fo = fopen("101.txt","a+");
  8. fwrite($fo,$data);
  9. fclose($fo);
  10. ?>
复制代码


但是这个代码实现起来有问题,第一次是能生成一个完整的101.txt, 但是我如果删除这个101.txt ,接下去每次生成的101.txt都是不完整的(不知道啥原因)


也就是想请论坛上的大佬,完善一下这段代码?或者即兴写一段让我学习下.
作者: 忘江湖    时间: 2019-9-4 17:05
本帖最后由 忘江湖 于 2019-9-4 17:07 编辑

路过帮顶一下。。。
作者: 乌鸦    时间: 2019-9-4 17:08
忘江湖 发表于 2019-9-4 17:05
路过帮顶一下。。。

已经搞定,感谢大佬回复.
作者: 我是一个大水怪    时间: 2019-9-4 17:12
本帖最后由 我是一个大水怪 于 2019-9-4 17:13 编辑

文件读写是最基本的编程练习吧?与使用任何语言无关,基本上都是封装的系统提供的C语言API,所以使用啥语言都差不多。
即使我不懂php,也能简单的看出问题:
`$data = $data.file_get_contents($dir)."\r";`是字符串连接吗,是类似Java中`StringBuilder.append`之类的操作?
`$fo = fopen("101.txt","a+");`,这里的`a+`是否使用正确了,有认真的考虑过吗?
作者: yangen    时间: 2019-9-4 17:13
没发现什么毛病,稍微改下
<?
for ($i=1;$i<=100;$i++) {
$dir=$i.".txt";
$data .= file_get_contents($dir)."\r";
}
file_put_contents('101.txt', $data, FILE_APPEND | LOCK_EX);
?>
作者: dvbhack    时间: 2019-9-4 17:14
本帖最后由 dvbhack 于 2019-9-4 17:16 编辑
  1. <?php
  2. $data = "";
  3. for ($i = 1; $i <= 100; $i++) {
  4.   $data .= file_get_contents("$i.txt");
  5. }

  6. file_put_contents("101.txt", $data);
复制代码


https://repl.it/repls/LightyellowAwfulPoints
作者: liuliuliu    时间: 2019-9-4 17:17
yangen 发表于 2019-9-4 17:13
没发现什么毛病,稍微改下

优秀
作者: 雨灵    时间: 2019-9-4 17:18
$file = fopen('101.txt', 'a+');
for ($i = 1; $i <= 100; $i++) {
        fwrite($file, file_get_contents($i.'.txt')
}

fclose($file);
作者: 乌鸦    时间: 2019-9-4 17:18
yangen 发表于 2019-9-4 17:13
没发现什么毛病,稍微改下

已经搞定了,谢谢.




欢迎光临 全球主机交流论坛 (https://loc.888543.xyz/) Powered by Discuz! X3.4