2013-03-17 59 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循環之外的任何東西,這可能會被滿足作爲出路。