Как отразить позицию .txt?

Я делаю код, основанный на двух .txt, один с именами, а другой с днями рождения. Я читаю их, и когда дата дня совпадает с date.txt, имя в совпадающей строке names.txt будет показано, но когда я сделаю сравнение, появится только последняя строка names.txt.

Вот код:

<?php

$nome   =   fopen("nome.txt", "r");
while(!feof($nome)){
$pessoa =   fgets($nome);
}   fclose($nome);

$current    =   date("d-m");
$content    =   fopen("data.txt", "r");

while (!feof($content)){
$linha  = fgets($content);
if (strtotime($linha)   ==  strtotime($current))   {
echo $pessoa;
echo '<br>';
}
}   fclose($content);

?>

Содержание .txt:


nome.txt:

удостоверительная часть судебного приказа

teste1

teste2

teste3


data.txt:

12-12

18-12

12-12

12-12

-1

Решение

Вы можете обрабатывать построчно из обоих файлов одновременно

<?php

$nome    =   fopen("nome.txt", "r");
$content =   fopen("data.txt", "r");
$current =   date("d-m");

while(!feof($nome) && !feof($content)){
$pessoa =   fgets($nome);
$linha  = fgets($content);

if (trim($current) == trim($linha))   {
echo $pessoa;
echo '<br>';
}
}

fclose($content);
fclose($nome);

?>

Или вы можете прочитать весь файл в массив, используя функция файла но это может быть медленнее

<?php

$nome    =   file("nome.txt");
$content =   file("data.txt");
$current =   date("d-m");

foreach($content as $key => $linha)

if (trim($current) == trim($linha))   {
echo $nome[$key];
echo '<br>';
}

?>
0

Другие решения

Вы можете открывать файлы и загружать их в массивы и использовать foreach с ключом $ для их синхронизации.

$names = explode(PHP_EOL,file_get_contents("none.txt"));

$dates = explode(PHP_EOL,file_get_contents("data.txt"));

Foreach($names as $key => $name){

Echo $name . " " . $dates[$key] . "\n";
}

https://3v4l.org/59ao6

Другой способ — объединить два массива в один.
Это, однако, имеет недостаток, вы не можете иметь двух человек с одинаковыми именами.

$days = array_combine($names, $dates);
// Days is now an associate array with name as key and date as birthday.
Foreach($days as $name => $date){

Echo $name . " " . $date . "\n";
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector