如果第一条语句存在,执行第二条语句
问题描述:
如果一个目录不存在,我创建目录并保存一个文件,如果该目录存在,我也可以保存文件。一次创建一个文件的时间不应与下面的代码同时生成。如果现在创建第一个文件,那么只有在调用该函数时才会创建下一个文件。这些文件被命名为R1,R2 .... Rn。我怎样才能做到这一点,这造成他们都在同一时间如果第一条语句存在,执行第二条语句
$fileName1=$fileName1='somedir/'.$thedir.'/'.$thefile.'_R1.xlsx';
...
if (!dir($dirName))
{
mkdir('somedir/' . thedir, 0777);
$objWriter->save($fileName);
}
if (dir($dirName) && (!file_exists($fileName)))
{
$objWriter->save($fileName);
}
if (dir($dirName) && file_exists($fileName))
{
$objWriter->save('somedir/' . $thedir . '/' . $thefile . '_R1.xlsx');
}
if (dir($dirName) && file_exists($fileName1))
{
$objWriter->save('somedir/' . $thedir . '/' . $thefile . '_R2.xlsx');
}
...
答
if (!is_dir($dir))
mkdir($dir, 0777);
$suffixes = array('_R1.xlsx', '_R2.xlsx');
foreach($suffixes as $suffix) {
$fileName = $dir.'/' . $thefile . $suffix;
if (! file_exists($fileName)) {
$objWriter->save($fileName);
break;
}
}
您必须添加错误处理,并请注意,仅仅检查文件可创建的并发问题(两个进程尝试都看到这该文件不存在并尝试创建它)。
答
您将需要使用[is_dir][1]
函数来检查文件夹是否存在。
看看这个代码 - 从一个有点返工你
$fileName1=$fileName1='somedir/'.$thedir.'/'.$thefile.'_R1.xlsx';
....
// Directory does not exist - create it
if (!is_dir($dirName))
{
mkdir('somedir/' . thedir, 0777);
$objWriter->save($fileName);
}
// Directory exists
if (is_dir($dirName))
{
// File does not exist - create it
if (!file_exists($fileName)))
{
$objWriter->save($fileName);
}
// Check one more time if the file exists
if (file_exists($fileName)))
{
$objWriter->save('somedir/' . $thedir . '/' . $thefile . '_R1.xlsx');
$objWriter->save('somedir/' . $thedir . '/' . $thefile . '_R2.xlsx');
}
}
.......
你需要[is_dir()](http://php.net/is_dir)函数[DIR()](HTTP: //php.net/dir)不会像你想象的那样行事 – Touki