2012-01-29 2 views
0

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

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

и функцию Я использую пробеги таким образом:

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

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

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

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

ответ

3
$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); 
} 
+1

Спасибо за это! Однако мне пришлось удалить первую косую черту в переменной $. :-) –

0

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

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

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

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

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

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

Это следующая строка конкатенации (соединения) ваши переменные вместе в пути:

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

конкатенация работает как этот

$directory = $rid.$artistid."/".$appid."/" 
0

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

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

, а затем ...

$dir = '/' . $rid . '/' . $sid . '/' . $ssid . '/'; 
if (!is_dir($dir)) { 
    mkdir($dir); 
}