【问题标题】:How to make an incrementing loop for checking filename PHP如何创建一个递增循环来检查文件名 PHP
【发布时间】:2020-02-05 03:18:53
【问题描述】:

我在服务器中有这样的文件名的数据(它在 PDO 上):

$row["control_number"]-201909A16.txt
$row["control_number"]-201910A15.txt
$row["control_number"]-201906A13.txt
$row["control_number"]-201910A06.txt

201910 是软件修订日期,A06 是软件版本。

然后我有一个看起来像这样的表:

| id | control_number   | data status | 
| 1  | 000000-0000      |  ON SERVER  |

如果服务器中存在具有相同or_number的数据,则该值将输出ON SERVER,如果不存在File not found

现在我正在考虑一个递增循环来过滤文件名。

类似这样的:

///$IncrementFilename must be increment continuesly until it match a file name in the server

$path = 'http://127.0.0.0:0000/data/';
$path2 = $path.'/'.$row["control_number"].'/'.$row["control_number"].'.$IncrementFilename.'.txt' ; // declare exact path of data

if (fopen($path2, "r")) {
        $tbody .= '<td rowspan="" style="vertical-align:middle;text-align:center;cursor:pointer" class="ON-SERVER" id="">ON SERVER</td>';
    } else { //  IF FALSE 
        $tbody .= '<td rowspan="" style="vertical-align:middle;text-align:center;cursor:pointer" class="" id="">FILE NOT FOUND</td>';
    }

我不知道如何实现它。所以我无法展示我到目前为止所尝试的内容..

【问题讨论】:

    标签: php file for-loop increment


    【解决方案1】:

    如果我们假设A 之后的最大值仅为两位数,那么我建议创建嵌套循环。第一个用于年份,内部用于A

    function CheckOnServer($controlNum, $name) {
        $path = 'http://127.0.0.0:0000/data/' . $controlNum . '/' 
                . $controlNum . '-' . $name. '.txt';
    
        return fopen($path, "r");
    }
    
    $startDate = \DateTime::createFromFormat('Ym', '201901');
    $endDate = new \DateTime();
    while ($startDate->getTimestamp() < $endDate->getTimeStamp()) {
        $month = $startDate->format('Ym');
        for ($i = 0; $i <= 99; $i++) {
            $IncrementFilename = $month . 'A' . str_pad($i, 2, '0', STR_PAD_RIGHT);
            if (CheckOnServer($row["control_number"], $IncrementFilename)) {
                echo "ON SERVER";
            } else {
                echo "FILE NOT FOUND";
            };
        }
        $startDate->modify('+1 month');
    }
    

    【讨论】:

    • 我不知道在函数 CheckOnServer() 里面放什么 .. 我怎样才能返回结果??
    • 您的文件是否在本地文件夹中?
    • 不,它在共享服务器上,我使用 web chrome 服务器访问它..查看我在问题中输入的路径..
    • 我已经更新了我的答案。试试代码,我已经放在那里了。
    • @Dmitriy Gritsenko 输出“未找到”以及 $name 和 $date un CheckOnServer() 的用途是什么? ,那你为什么要放.date。在路上?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2019-08-20
    • 1970-01-01
    • 2017-01-17
    • 2021-10-06
    • 2013-08-01
    相关资源
    最近更新 更多