基于一堆变量在PHP中创建目录

时间:2012-01-29 14:28:55

标签: php variables concatenation mkdir

我一直在尝试按照特定结构创建一个目录,但似乎没有任何事情发生。我通过定义多个变量来解决这个问题:

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

并且我一直在使用的功能如此运行:

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

有效。但是,我希望在创建的目录中具有以下结构: / appicons / $ artistid / $ appid /

但似乎没有任何效果。我明白,如果我要向$ directory添加更多变量,那么我必须使用它们周围的引号并将它们连接起来(这会让人感到困惑)。

有没有人有任何解决方案?

4 个答案:

答案 0 :(得分: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中的字符串文字是用单引号(')括起来的字符串。此字符串中的每个字符都被视为一个字符,因此任何变量都只会被解析为文本。取消引用变量以使您的声明看起来像以下内容修复了您的问题:

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

下一行将您的变量连接(连接)到路径中:

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

答案 2 :(得分:0)

连接就像这样

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

答案 3 :(得分:0)

当您将一个变量分配给另一个变量时,您不需要它周围的引号,因此以下内容应该是您正在寻找的内容。

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

然后......

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