关于2-5的问题
来源:2-7 文件读写函数封装
慕粉2209067689
2017-09-12 18:42:30
function write_file($filename,$date,$clearFlag){
$dirname=dirname($filename);
if(!file_exists($filename)){
mkdir($dirname,0777,true);
}
if(is_file($filename)&&is_readable($filename)){
if(filesize($filename)>0){
$srcDate=file_get_contents($filename);
global $srcDate;
}
}
if(is_array($date)||is_object($date)){
serialize($date);
}
if($clearFlag){
if(!file_put_contents($filename,$date,$clearFlag)){
return true;
}else{
return false;
}
}else{
global $srcDate;
$date=$srcDate.$date;
if(!file_put_contents($filename,$date)){
return true;
}
return false;
}
}
var_dump(write_file('2.txt','564',false));
这个代码每次运行结果都是FALSE,而且都是覆盖写入,请问需要怎么修改才能做到由clearFlag来控制覆盖写入还是追加写
2回答
代码判断修改如下
if(file_put_contents($filename,$date,$clearFlag)){
return true;
}else{
return false;
}
imooc_澈
2017-09-12
您好,从你的代码逻辑来看,当$clearFlag值为true时,覆盖,为false时,追加,我们修改后面的判断代码如下:
if($clearFlag){
if(!file_put_contents($filename,$date)){
return '写入失败';
}else{
return '写入成功';
}
}else{
// global $srcDate;
$date=$srcDate.$date;
if(!file_put_contents($filename,$date)){
return '追加失败';
}
return '追加成功';
}
}
按照您的判断,if(!file_put_contents($filename,$date)),写入失败,else的话就写入成功,为了能够更清晰,小慕修改了返回提示,您也依然使用true或false作为返回。
通过参数$clearFlag判断该写入操作是覆盖还是追加,覆盖就将数据直接写入,追加的话就将新数据$date和原来的数据$srcDate连在一起再写入文件。写入是否成功可以通过返回的字符串判断。再去查看文件内容就知道了。
另外,$srcDate不用使用global设置为全局,可以在函数开始定义这个局部变量,设置为空字符串即可。$srcDate='';
如果解决了您的问题,请采纳,祝学习愉快~
相似问题