一个获取当前目录下所有文件并输出数组的方法

php获取目录中的所有文件 并将结果保存到数组中。

<?php
header("Content-type:text/html;charset=utf-8");

//该方法自动获取最新驱动名组成json数组
function latestFileNames($product_name, $driver_type = ['官方驱动', '第三方驱动', '医疗版驱动'], $keywords = ['', '', '']) {
    $dirverDir = './drivers/';
    $driverlinks="https://xxxx/download/drivers/";
    // 获取当前目录下所有文件名
    $files = scandir($dirverDir);
    
    $result = [$product_name];
    $driver_files = [];

    foreach ($driver_type as $key => $driver) {
        $latest_file_name = null;
        
        // 筛选文件名,只选择包含设置的关键词的文件
        $matched_files = [];
        if (!empty($keywords[$key])) {
            $matched_files = preg_grep('/' . $keywords[$key] . '/', $files);
        }

        if (count($matched_files)) {
            $driver_files[$driver] = $matched_files;
            
            // 比较文件更新时间
            foreach ($matched_files as $file_name) {
                if (empty($latest_file_name) || filemtime($file_name) > filemtime($latest_file_name)) {
                    $latest_file_name = $driverlinks.$file_name;
                }
            }

            // 将驱动类型和对应的文件名组成一个小数组,并存入 $result 数组
            $result[] = [$driver, $latest_file_name ?: ''];
        } else {
            // 没有找到该类型的驱动,将空值存入 $result 数组
            $result[] = [$driver, ''];
        }
    }

    // 获取最新更新的文件时间
    $latest_time = 0;
    foreach ($driver_files as $matched_files) {
        foreach ($matched_files as $file_name) {
            if (filemtime($dirverDir.$file_name) > $latest_time) {
                $latest_time = filemtime($dirverDir.$file_name);
            }
        }
    }

    // 将最新更新的文件时间存入 $result 数组的结尾
    $result[] = date('Ymd', $latest_time);

    return $result;
}


//驱动类型参数
$driver_type = ['官方驱动', '第三方驱动', '医疗版驱动'];
//驱动类型参数
$driver_type2 = ['X4,X4DL(WIN10)', 'X4,X4DL(WIN7)', '早期7160芯片'];

//所匹配的驱动名称关键字
$keywords1 = ["CY3014.DV2008_YS","CY3014.CONFERENCE_YS","CY3014.MEDICAL_YS"];
$keywords2 = ["QP0203_YS","QP0203.CONFERENCE_YS","QP0203.MEDICAL_YS"];
$keywords3 = ["SC0700.DV2008.TC700","SC0700.DV2008.TC700.DIRECTSOUND.MEDICAL_YS","SC0700.DV2008.TC700.MEDICAL_YS"];
$keywords4 = ["SC0710_YS","SC0710.CONFERENCE_YS","SC0710.MEDICAL_YS"];
$keywords5 = ["SC0720_YS","SC0720.CONFERENCE_YS","SC0720.MEDICAL_YS"];
$keywords6 = ["DC1150.DV2008.SC360_YS","DC1150.CONFERENCE_YS","DC1150.DV2008_YS"];
$keywords7 = ["MZ0380_YS","MZ0380.CONFERENCE_YS","MZ0380.MEDICAL_YS"];
$keywords8 = ["TC.SD4000_YS","TC.SD4000.DIRECTSOUND_YS",""];
$keywords9 = ["TCHD-610N1","TCHD-610N2",""];
$keywords10 = ["QP0204_YS","QP0204.LIVECAP.MEDICAL_YS","QP0204.MEDICAL_YS"];
$keywords11 = ["X4-X4DL-WIN10","X4-X4DL-WIN7","SA7160_YS"];

//合并数组
$driversInfo = array_merge(
[latestFileNames('UB530驱动', $driver_type, $keywords1)],
[latestFileNames('540,542,5A0,739驱动', $driver_type, $keywords2)],
[latestFileNames('700系列驱动', $driver_type, $keywords3)],
[latestFileNames('710,400,410,749驱动', $driver_type, $keywords4)],
[latestFileNames('720驱动', $driver_type, $keywords5)],
[latestFileNames('UB652,TC360驱动', $driver_type, $keywords6)],
[latestFileNames('5C0,3C0,550,560,390驱动', $driver_type, $keywords7)],
[latestFileNames('300N1,4000SD,8000SD驱动', $driver_type, $keywords8)],
[latestFileNames('610系列驱动', $driver_type, $keywords9)],
[latestFileNames('UB5A0N4-H驱动', $driver_type, $keywords10)],
[latestFileNames('X4,X4DL系列驱动,早期7160芯片驱动', $driver_type2, $keywords11)],

);

//输出验证,直接访问https://xxxx/download/getDrivers.php验证
echo json_encode($driversInfo,320);

//将数据保存至drivers_list.txt便于官网抓取
$cacheUrl = __DIR__."/drivers/drivers_list.txt";
@file_put_contents($cacheUrl, json_encode($driversInfo,320));


 

本文作者:𝙕𝙆𝘾𝙊𝙄

文章名称:一个获取当前目录下所有文件并输出数组的方法

文章链接:https://www.zkcoi.com/365up/program/2639.html

本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
𝙕𝙆𝘾𝙊𝙄𝙕𝙆𝘾𝙊𝙄
上一篇 2023年4月9日 下午9:19
下一篇 2023年4月13日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

私聊博主

立即联系
一般有空就回复

qrcode_web

微信扫码联系我

分享本页
返回顶部