2013-03-17 60 views
0

下面的代码我试着检查dir中有多少文件夹,并以升序编号创建新的一个文件夹,例如 例如:
a。如果12dir - >它会创建一个名为3的文件夹; b。如果15dir - >我希望它可以使一个文件夹名为2在循环中如何检查`mkdir`执行然后停止循环?

但现在在b。它会使 - >23。 所以我想知道如何检查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 ? 
    } 
} 

回答

0

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

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

据我所知,你只是想摆脱你的循环,当你已经成功地创建一个文件夹,所以你可能不需要else块都在你的情况

0

我可能会做这种方式:

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

请注意,我不明白为什么你会想摆脱除了一个while循环之外的任何东西,这可能会被满足作为出路。