我有以下代码,但我试图将它缩短为几乎一两行,因为我确定我对if的评估是不需要的,无论如何,下面的代码可以缩短为甚至单数线?
if(file_exists($myFile))
{
$fh = fopen($myFile, 'a');
fwrite($fh, $message."\n");
}
else
{
$fh = fopen($myFile, 'w');
fwrite($fh, $message."\n");
}
答案 0 :(得分:51)
if (file_exists($myFile)) {
$fh = fopen($myFile, 'a');
fwrite($fh, $message."\n");
} else {
$fh = fopen($myFile, 'w');
fwrite($fh, $message."\n");
}
fclose($fh);
==
if (file_exists($myFile)) {
$fh = fopen($myFile, 'a');
} else {
$fh = fopen($myFile, 'w');
}
fwrite($fh, $message."\n");
fclose($fh);
==
$fh = fopen($myFile, (file_exists($myFile)) ? 'a' : 'w');
fwrite($fh, $message."\n");
fclose($fh);
==(因为a
检查文件是否存在,如果不存在则创建文件
$fh = fopen($myFile, 'a');
fwrite($fh, $message."\n");
fclose($fh);
==
file_put_contents($myFile, $message."\n", FILE_APPEND);
...当然,file_put_contents()
只有在你对给定句柄执行的唯一写操作时才会更好。如果您在同一个文件句柄上稍后调用fwrite()
,那么最好使用@Pekka的答案。
答案 1 :(得分:15)
a
已经开箱即用。
仅供写作;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。
答案 2 :(得分:4)
$method = (file_exists($myFile)) ? 'a' : 'w';
$fh = fopen($myFile,$method);
fwrite($fh, $message."\n");
答案 3 :(得分:3)
fopen()。模式a
只需要你。
答案 4 :(得分:2)
$fh = file_exists($myFile) ? fopen($myFile, 'a') : fopen($myFile, 'w');
fwrite($fh, $message."\n");
答案 5 :(得分:2)
$fh = (file_exists($myFile)) ? fopen($myFile,'a') : fopen($myFile,'w');
fwrite($fh, $message."\n");
答案 6 :(得分:1)
附加模式已经完成了您所描述的内容。来自fopen
的PHP手册页:
'a':仅供写作;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。
答案 7 :(得分:1)
根据php手册,这应该足够了。请参阅description of "a"
fopen($myFile, "a");
fwrite($fh, $message."\n");
答案 8 :(得分:0)
我相信a
(追加)模式已经存在...如果存在则附加,否则创建新
fopen($myFile, "a");
答案 9 :(得分:0)
$method = (file_exists($myFile)) ? 'a' : 'w';
$fh = fopen($myFile,$method);
fwrite($fh, $message."\n");
不是$ myFile包含绝对/相对路径..?
答案 10 :(得分:0)
# addfile.php
$file = new \SplFileObject( __DIR__.'/foo.txt', 'a' );
var_dump( file_exists( $file->getFilename() ) );
$ php addfile.php
bool(true)