PHP Mkdir, если папка не существует, если она продолжится, но каждый раз будет добавлять к имени возрастающее значение - PullRequest
0 голосов
/ 06 февраля 2012

Я проверяю, существует ли папка, с помощью функции file_exists.

Если этого не произойдет, я создаю набор папок.

Если он существует, я хочу, чтобы он продолжал создавать папки, но верхняя папка должна увеличивать id # 1, # 2, # 3 и т. Д. Каждый раз.

if (file_exists('temp/$email')) {
    mkdir("temp/$email/");  
    mkdir("temp/$email/css");  
    mkdir("temp/$email/js");  
    mkdir("temp/$email/images"); 

} else {

    $version = 0;
    $version++;

    mkdir("temp/$email$version/");  
    mkdir("temp/$email$version/css");  
    mkdir("temp/$email$version/js");  
    mkdir("temp/$email$version/images"); 
}

Что-то в этом роде, но, очевидно, это не сработает. Как я могу сделать это?

Также - есть ли более чистый / простой способ сделать несколько mkdir вместо того, чтобы записывать их в длинный список, как, как я сделал?

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Вот несколько более эффективное решение для вас, также оно позволяет создавать подкаталоги без большого списка mkdir.

Вы можете определить подкаталоги, например a/deeper/sub/directory, и он создаст полный путь.

Некоторые значения по умолчанию для работы кода:

define('BASE_DIR', 'temp/');

$email = 'hello';

$subdirs = array(
    'css',
    'js',
    'images'
);

Улучшенный цикл:

$version = '';

if (file_exists(BASE_DIR . $email)) {
    $version = 0;
    while (file_exists(BASE_DIR . $email . (++$version)));
}

Создайте свои подкаталоги:

foreach ($subdirs as $dir) {
    mkdir(BASE_DIR . $email . $version . '/' . $dir, 0777, true);
}
1 голос
/ 06 февраля 2012
if (file_exists('temp/'.$email)) {
    $version = 1;
    while (file_exists('temp/'.$email.$version)) {
        $version ++;
    }
} else {
    $version = "";
}
mkdir("temp/".$email.$version."/");  
// etc

Вы также должны поставить проверку на исправность, чтобы убедиться, что вы не получите бесконечный цикл.

...