在循环中如何检查`mkdir`是否执行然后停止循环?

时间:2013-03-17 00:45:20

标签: php

下面的代码我尝试检查dir中的文件夹数量,并按升序号码创建新的文件夹, 例如:
一个。如果1中的2 dir - >它将创建一个名为3的文件夹;
湾如果1中的5 dir - >我希望它可以创建一个名为2

的文件夹

但现在在b。它会 - > 2 3。 所以我想知道如何检查mkdir是否执行然后在for停止循环? 或者更好的主意?

// count folder
$folder = 0;
$dir = new RecursiveDirectoryIterator('./img/product/tmp/', FilesystemIterator::SKIP_DOTS);
$it  = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST);
$it->setMaxDepth(0);
foreach($it as $fileinfo){
    if($fileinfo->isDir()){
        $folder++;
    }
}
// create folder
$new_dir = './img/product/tmp/';
for($i = 0; $i <= $folder; $i++){
    if(!is_dir($new_dir.$i)){// limit tmp_id  is the !exist
        mkdir($new_dir.$i);
        $tmp_id = $i;
        // check if mkdir then stop loop ?
    }
}

2 个答案:

答案 0 :(得分:0)

mkdir成功返回true,否则返回false

if (mkdir($new_dir.$1)) {
  // directory created, do your thing here
  break;
}
else {
  // failed to create directory
}

据我所知,你只想在成功创建文件夹时突破你的循环,所以在你的情况下你可能根本不需要else

答案 1 :(得分:0)

我可能会这样做:

    mkdir $my_folder
    if [ $? -ne 0 ] ;then
            echo "Error creating $my_folder
    else
            echo "Yey, $my_folder
            break;
    fi

请注意,我不明白为什么你会想要打破除了while循环之外的任何东西,这可能会让人感到满意。