如果第一个语句成立,则执行第二个语句

时间:2012-10-25 14:46:38

标签: php codeigniter

如果目录不存在,我创建目录并保存文件,如果目录存在,我也可以保存文件。应该一次创建一个文件,而不是与下面的代码同时创建。如果现在创建了第一个文件,则只应在调用该函数时创建下一个文件。文件命名为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');
}

...

2 个答案:

答案 0 :(得分:0)

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;
  }
}

您必须添加错误处理,并注意只检查文件可能会产生并发问题(两个进程同时尝试查看该文件不存在并尝试创建它)。

答案 1 :(得分:0)

您需要使用[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');
    }
}

.......