我正在尝试从数组中创建一个文件夹树,取自字符串。
$folders = str_split(564);
564实际上可以是任何数字。目标是创建一个像/ 5/6/4
这样的文件夹结构我设法在一个位置创建所有文件夹,使用来自另一个线程的代码 -
for ($i=0;$i<count($folders);$i++) {
for ($j=0;$j<count($folders[$i]);$j++) {
$path .= $folders[$i][$j] . "/";
mkdir("$path");
}
unset($path);
}
但这样我将所有文件夹放在同一个包含路径中。 此外,如何在磁盘上的特定位置创建这些文件夹?不熟悉高级php,抱歉:(
谢谢。
答案 0 :(得分:1)
这很简单。
对文件夹数组中的每个循环执行a并创建一个字符串,该字符串在每个循环上追加下一个子文件夹:
<?php
$folders = str_split(564);
$pathToCreateFolder = '';
foreach($folders as $folder) {
$pathToCreateFolder .= DIRECTORY_SEPARATOR . $folder;
mkdir($folder);
}
您还可以添加基本路径,其中应将文件夹创建为初始$pathToCreateFolder
。
在这里,您将找到一个演示:http://codepad.org/aUerytTd
或者你像迈克尔在评论中提到的那样,只用一行:
mkdir(implode(DIRECTORY_SEPARATOR, $folders), 0777, TRUE);
TRUE标志允许mkdir创建文件夹recursivley。而内爆将目录部分放在一起就像5/6/4
一样。 DIRECTORY_SEPARATOR是unix机器上的斜杠(/)或Windows上的反斜杠(\)的PHP常量。
答案 1 :(得分:0)
为什么不这样做:
<?php
$directories = str_split(564);
$path = implode(DIRECTORY_SEPARATOR, $directories);
mkdir($path, 0777, true);
答案 2 :(得分:0)
不知道你真正想做什么,但这里有一些提示。
有递归的mkdir:
if(!file_exists($dir)) // check if directory is not created
{
@mkdir($dir, 0755, true); // create it recursively
}
您想要的路径可以在两个函数调用中进行,并以某个起始路径作为前缀:
$path = 'some/path/to/cache';
$cache_node_id = 4515;
$path = $path.'/'.join('/', str_split($cache_node_id));
结果路径可用于创建包含上述代码的文件夹
所以这里我们来看一对函数/方法
function getPath($node_id, $path = 'default_path')
{
return $path.'/'.join('/', str_split($node_id))
}
function createPath($node_id, $path = 'default_path');
{
$path = getPath($node_id, $path);
if(!file_exists($path)) // check if directory is not created
{
@mkdir($path, 0755, true); // create it recursively
}
}
使用这些文件夹,您可以轻松地在任何地方创建这样的文件夹,并按照您的号码获取。
答案 3 :(得分:0)
如前所述,我从朋友那里得到的解决方案是
$folders = str_split(564);
mkdir(implode('/',$folders),0777,true);
另外,要添加变量中定义的位置,我使用
$folders = str_split($idimg);
mkdir($path_defined_earlier. implode('/',$folders),0777,true);
非常感谢所有答案,似乎这是处理这个问题的正确方法。 现在问题是我需要创建路径,那么如何将其存储在变量中呢?对不起,如果这违反了任何规则,如果我需要创建一个新线程,我会这样做......