1

下面的代码我尝试检查有多少文件夹dir并按升序创建一个新文件夹,例如
:如果1 2dir-> 它将创建一个名为3;
湾。如果1 5dir -> 我希望它可以创建一个名为的文件夹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 ?
    }
}
4

2 回答 2

1

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

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

据我所知,您只想在成功创建文件夹后跳出循环,因此else在您的情况下您可能根本不需要该块

于 2013-03-17T00:49:06.807 回答
0

我可能会这样做:

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

请注意,我不明白您为什么要摆脱除了可以满足的 while 循环之外的任何内容。

于 2014-05-14T20:29:21.270 回答