0

2つのフォルダ名が1あり3./path/1 ./path/3に新しいフォルダを追加しようとしていますが、フォルダ名を並べ替えて不足している番号を見つける方法は2

<?php 
    $file = 0;
    $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()) {
            printf("Folder - %s\n", $fileinfo->getFilename());
            $folder++;
        } elseif ($fileinfo->isFile()) {
            printf("File From %s - %s\n", $it->getSubPath(), $fileinfo->getFilename());
            $file++;
        }
    }

    if(/* find the missing number */){
        $folder_new = //missing number
        $dir = './path/'.$folder_new;
        if(!is_dir($dir)){
        mkdir($dir);
    }else{
        $folder_new = $folder+1;
        $dir = './path/'.$folder_new;
        if(!is_dir($dir)){
            mkdir($dir);
        }
    }
?>
4

3 に答える 3

1

基本的に:

$root = $_SERVER['DOCUMENT_ROOT']; // '.' doesn't work on the backend for going to the root.
$path = "$root/path/";

$dirs = glob("$path*"); // this creates an array with everything inside $path
sort($dirs); //you wanted the directories sorted

//deleting the files (not dirs)
foreach($dirs as $k => $dir){
    if(!is_dir($dir)){
        unset($dirs[$k]);
    }
}

$max = array_max($dirs); //folder number with the highest number as name.

// this is the part finding out what number is missing
    for($i = 0; $i <= $max; $i++){
        if(!is_dir($path.$i){
            mkdir($path.$i);
        }
    }

テストしませんでした、ただ私の頭からそれを書きました、それがあなたのために働くことを願っています:)

于 2013-03-15T10:39:55.583 に答える
0

ただし、ディレクトリ(./path)内のフォルダのリストを取得できれば、比較してどのディレクトリが存在するかを確認できます。

for ( $i = 0; $i < 100; $i++ ) {
  if (  ! is_dir( './path/' . $i ) ) {
    mkdir( './path/' . $i );
  }
}
于 2013-03-15T10:40:40.770 に答える
0

あなたはこのようなことをしようとしていますか?

<?php

$to = 5;

for ($i = 1; $i <= $to; $i++) {
  echo '<br/>';
  $my_path = dirname(__FILE__) . '/path/' . $i;
  if (!is_dir($my_path)) {
    echo $i . ' dir not exist ';
    if (mkdir($my_path, 0777)) {
      echo $i . ' dir created ';
    } else {
      echo $i . ' dir not created ';
    }
  } else {
    echo $i . ' dir already exists ';
  }
}
?>
于 2013-03-15T10:49:04.427 に答える