Создание каталога в PHP на основе набора переменных - PullRequest
0 голосов
/ 29 января 2012

Я пытался создать каталог по определенной структуре, но, похоже, ничего не происходит. Я подошел к этому, определив несколько переменных следующим образом:

 $rid = '/appicons/';
 $sid = '$artistid';
 $ssid = '$appid';
 $s = '/';

и функция, которую я использовал, работает следующим образом:

 $directory = $appid;
 if (!is_dir ($directory)) 
    { 
     mkdir($directory); 
    }

Это работает. Однако я хочу иметь следующую структуру в созданных каталогах: / appicons / $ artistid / $ appid /

пока что, похоже, ничего не работает. Я понимаю, что если бы я добавил дополнительные переменные в каталог $, то мне пришлось бы использовать кавычки вокруг них и объединять их (что сбивает с толку).

Есть ли у кого-нибудь решения?

Ответы [ 4 ]

3 голосов
/ 29 января 2012
$directory = "/appicons/$artistid/$appid/";
if (!is_dir ($directory)) 
{
     //file mode
     $mode = 0777;
     //the third parameter set to true allows the creation of 
     //nested directories specified in the pathname.
     mkdir($directory, $mode, true);
}
0 голосов
/ 29 января 2012

Когда вы присваиваете одну переменную другой, вам не нужны кавычки вокруг нее, поэтому вы должны искать следующее:

$rid = 'appicons';
$sid = $artistid;
$ssid = $appid;

, а затем ...

$dir = '/' . $rid . '/' . $sid . '/' . $ssid . '/';
if (!is_dir($dir)) { 
  mkdir($dir); 
}
0 голосов
/ 29 января 2012

Конкатенация работает следующим образом

$directory = $rid.$artistid."/".$appid."/"
0 голосов
/ 29 января 2012

Это должно делать то, что вы хотите:

$rid = '/appicons/';
$sid = $artistid;
$ssid = $appid;
$s = '/';

$directory = $rid . $artistid . '/' . $appid . $s;

if (!is_dir ($directory)) { 
    mkdir($directory); 
}

Причина, по которой ваш текущий код не работает, заключается в том, что вы пытаетесь использовать переменную внутри строкового литерала . Строковый литерал в PHP - это строка, заключенная в одинарные кавычки ('). Каждый символ в этой строке рассматривается как просто символ, поэтому любые переменные будут просто анализироваться как текст. Снятие кавычек с переменных, чтобы ваши объявления выглядели следующим образом, решает вашу проблему:

$rid = '/appicons/';
$sid = $artistid;
$ssid = $appid;
$s = '/';

Следующая строка объединяет (объединяет) ваши переменные в путь:

$directory = $rid . $artistid . '/' . $appid . $s;
...