日期:2014-05-17  浏览次数:20397 次

php的函数file()的用法
<?php
  $fp=fopen("交响乐.txt","rb+");
  fseek($fp,0);
  while($fp){
  echo fgets($fp);echo "<br>";
  }
  echo "<hr>";
   
  $readarray=file("经典时尚语录.txt");
  if(!$readarray){
  echo "用file函数读取文件失败<br>";
  }
  else file_put_contents("语录.txt",$readarray);  
  echo "<hr>";
  fclose($fp);
?>
上述代码中为什么不能实现将同一目录下的文件"经典时尚语录.txt"的数据写到文件"语录.txt"(新创建的)中去?

我不解也?请各位指点,不胜感激!

------解决方案--------------------
<?php
$fp=fopen("交响乐.txt","rb+");
fseek($fp,0);
while( feof($fp) ){ 
echo fgets($fp);echo "<br>";
}

fgets()只取文件中 一行 内容。取哪行,由文件内部指针确定。fgets每取一行内容,指针向前一行。
feof()用于检测指针是否已经到底,即文件最末尾。
而你用$fp,它的值并不会变化,因此会陷入死循环

===========
$readarray=file("经典时尚语录.txt");
if(!$readarray){
echo "用file函数读取文件失败<br>";
}
else file_put_contents("语录.txt",$readarray);
echo "<hr>";
fclose($fp);

file()函数的返回值是数组类型。而file_put_contents()接受的类型是字符串,因此,写入的的$readarray会被强制类型转换为字符串类型,也就是'Array'
参考:http://www.php.net/manual/zh/ref.filesystem.php