gpt4 book ai didi

php - 在 db 中插入目录名称和文件

转载 作者:行者123 更新时间:2023-11-29 11:53:49 24 4
gpt4 key购买 nike

大家好,我不知道如何将数组插入数据库。我有扫描我的目录和子目录及其文件的功能。

在我的数据库中,我需要写入目录名和文件名。

ID |  dir_name | file_name 
------------------------------
1 | album_1 | Hero-527920799.jpg

为了扫描目录,我使用这个函数:

 function scanDirectory($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] = scanDirectory($dir . DIRECTORY_SEPARATOR . $value);
}
else
{
$result[] = $value;
}
}
}

return $result;
}

现在如何从 foreach 或 while 循环中提取数据库中的所有目录和文件?

Array
(
[album-1] => Array
(
[0] => Hero-527920799.jpg
)

[album-2] => Array
(
[0] => topic-1350661050.jpg
)

[album-3] => Array
(
[0] => bigcompany.jpg
)

[album-4] => Array
(
[0] => small_animal.jpg
)

[album-5] => Array
(
[0] => little_animals.jpg
)

)

最佳答案

第一种方法位于帖子末尾。将 $data 设置为 scanDirectory($dir) 调用的结果。

方法 2:

$data = scanDirectory($dir);
$result = array();
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($data), RecursiveIteratorIterator::LEAVES_ONLY);
foreach($iterator as $key => $value) {
$parent_key = $iterator->getSubIterator($key)->key();
$result[$parent_key][] = $value;
}

foreach($result as $key => $value) {
foreach($value as $s_key => $s_value) {
$sql = "INSERT INTO your_table (dir_name, file_name) VALUES ('$key', '$s_value')";
//Execute $sql here
}
}

方法 3:

如果这是您的数据结构,那么您可以使用以下内容:

$data = array(
'album-1'=>array(
'Hero-527920799.jpg',
'Hero2-527920799.jpg',
),
'album-2'=>array(
'topic-1350661050.jpg',
'topic2-1350661050.jpg',
),
'album-3'=>array(
'bigcompany.jpg',
'topic2-1350661050.jpg',
),
);

foreach($data as $key => $value) {
foreach($value as $s_key => $s_value) {
$sql = "INSERT INTO your_table (dir_name, file_name) VALUES ('$key', '$s_value')";
echo $sql.'<br />';
//Execute $sql here
}
}

结果:

INSERT INTO your_table (dir_name, file_name) VALUES ('album-1', 'Hero-527920799.jpg')
INSERT INTO your_table (dir_name, file_name) VALUES ('album-1', 'Hero2-527920799.jpg')
INSERT INTO your_table (dir_name, file_name) VALUES ('album-2', 'topic-1350661050.jpg')
INSERT INTO your_table (dir_name, file_name) VALUES ('album-2', 'topic2-1350661050.jpg')
INSERT INTO your_table (dir_name, file_name) VALUES ('album-3', 'bigcompany.jpg')
INSERT INTO your_table (dir_name, file_name) VALUES ('album-3', 'topic2-1350661050.jpg')

第一种方法(不起作用):

function gatherValue($value, $key, $data) {
$data[$key][] = $value;
}

$result = new ArrayObject();
array_walk_recursive($data, 'gatherValue', $result);

foreach($result as $key => $value) {
$sql = "INSERT INTO your_table (dir_name, file_name) VALUES ('$key', '$value')";
}

关于php - 在 db 中插入目录名称和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33569033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com