Как сделать приращение l oop для проверки имени файла PHP - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть данные на сервере с такими именами файлов (это на 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  |

Значение будет выводить ON SERVER, если на сервере существуют данные с тем же or_number, если не File not found

Теперь я думаю увеличить l oop для фильтрации имен файлов.

примерно так:

///$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>';
    }

Я не знаю как этого добиться. Так что я не могу показать, что я до сих пор пробовал ..

1 Ответ

0 голосов
/ 05 февраля 2020

Если мы предположим, что максимальное значение после 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');
}
...