php – 将递归目录列表转换为MySQL表

前端之家收集整理的这篇文章主要介绍了php – 将递归目录列表转换为MySQL表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要列出给定父文件夹中的所有文件/文件夹,并将其转储到 mysql.

到目前为止我有:

<?PHP

ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(E_ALL);

$dir = '/home/kevinpirnie/www';

function dirToArray( $dir ) {
    $result = array();
    $cdir = scandir($dir);
    foreach ($cdir as $key => $value) {
        if (!in_array($value,array(".","..")))  {
            if (is_dir($dir . DIRECTORY_SEPARATOR . $value)){
                $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value);
            } else {
                $result[] = $value;
            }
        }
    }
    return $result;
}

$res = dirToArray($dir);

echo '<hr />';
echo '<pre>';
print_r($res);
echo '</pre>';

我坚持的是如何将ID分配给目录,然后将它们与父ID相关联.

现在,这个代码实现了我需要的东西,我只需要能够将它转换为MysqL插入语句,同时保持关联结构,并且我在长时间的工作中脑力激荡.

最后,我希望有一个类似于以下的表结构:

FileID,FolderID,ParentFolderID,FileName

我怎样才能做到这一点?

我稍微修改了你的代码.现在为每个目录,

index 0指向目录索引

索引1指向父目录索引

索引2,3,…. n指向文件

<?PHP

ini_set('display_errors',1);
error_reporting(E_ALL);

$dir = '/home/kevinpirnie/www';

$GLOBALS['I'] = 0; // root folder given index 0

function dirToArray( $dir,$parent) {
    $result = array();
    $cdir = scandir($dir);
    foreach ($cdir as $key => $value) {
        if (!in_array($value,"..")))  {
            if (is_dir($dir . DIRECTORY_SEPARATOR . $value)){

                $result[$value] = [++$GLOBALS['I']]; // add folder index
                $result[$value][] = $parent; // add parent folder index

                $result[$value][] = dirToArray($dir . DIRECTORY_SEPARATOR . $value,$GLOBALS['I']);
            } else {
                $result[] = $value;
            }
        }
    }
    return $result;
}

$res = dirToArray($dir,$GLOBALS['I']);

echo '<hr />';
echo '<pre>';
print_r($res);
echo '</pre>';
echo '</pre>';

您现在可以使用类似的递归循环直接将数据插入到MysqL表中(如果您不想使用MysqL自动生成的id)

如果你想使用自动生成MysqL id,你应该在两遍中插入.在第一遍中插入文件夹数据并从MysqL插入id函数获取id.然后创建一个关联数组映射

$array_map [$current_folder_id] = MysqLi_insert_id()

然后在第二个递归传递中更新此id

猜你在找的PHP相关文章