下面的代码我尝试检查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 ?
}
}
答案 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循环之外的任何东西,这可能会让人感到满意。