Мне нужен совет.
Мне нужно просмотреть и проанализировать текстовый файл (используя для курсов валют). Вот небольшой фрагмент этого файла:
c057z110323
h057z110323
a057z110323
b012z110323
c058z110324
h058z110324
a058z110324
c059z110325
h059z110325
a059z110325
c060z110328
h060z110328
a060z110328
c061z110329
h061z110329
a061z110329
c062z110330
h062z110330
a062z110330
b013z110330
c063z110331
h063z110331
a063z110331
c064z110401
h064z110401
a064z110401
c065z110404
h065z110404
a065z110404
c066z110405
h066z110405
a066z110405
c067z110406
h067z110406
a067z110406
b014z110406
c068z110407
h068z110407
a068z110407
c069z110408
h069z110408
a069z110408
Как вы можете видеть, есть много строк (в исходном файле около 80000 строк (добавляется несколько строк в день).
Формат строки следующий:
A000112233
where
A - type
000 - number of the file (created this year)
11 - year
22 - month
33 - day
Я получаю 25 последних строк из файла, используя следующий фрагмент:
$file = "http://www.nbp.pl/kursy/xml/dir.txt";
$data = file($file);
$count = count($data);
for($i = $count - 25; $i < $count; $i++)
{
if( substr($data[$i], 0, 1) === 'a' )
{
$latest[] = $data[$i];
}
}
Мне нужно получить только строки, начинающиеся с "а". Выходной массив выглядит следующим образом:
array(8) {
[0]=>
string(13) "a062z110330
"
[1]=>
string(13) "a063z110331
"
[2]=>
string(13) "a064z110401
"
[3]=>
string(13) "a065z110404
"
[4]=>
string(13) "a066z110405
"
[5]=>
string(13) "a067z110406
"
[6]=>
string(13) "a068z110407
"
[7]=>
string(13) "a069z110408
"
}
Теперь мне нужно сравнить каждый элемент массива, чтобы получить последний элемент за последний рабочий день до текущей даты. Я добиваюсь этого так:
$i = 1;
foreach($latest as $row)
{
$plural = ($i > 1) ? 's' : null;
if( substr(trim($row), -6) === date("ymd", strtotime("-" . $i . " day" . $plural) )
{
$filename = $row;
break;
}
$i++;
}
Работает вполне нормально, однако я столкнулся с одной большой проблемой. Я не могу отсортировать массив $latest
по последним шести символам. Я попытался сделать это с помощью sort (), rsort (). Никто из них не помог мне.
Может кто-нибудь помочь мне с этой проблемой или, может быть, есть лучший подход, чтобы сделать то, что я ищу.